Po wyświetleniu ekwipunku, kursor raz mignie i znika

Po wyświetleniu ekwipunku, kursor raz mignie i znika
XM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Witam, jest to mój kolejny post. Szukałem rozwiązania tego problemu wszędzie, ale żadna metoda tego nie naprawiła. Już tłumaczę o co chodzi. Zrobiłem prosty ekwipunek za pomocą Canvasu, który miał się wyświetlać po wciśnięciu klawisza P. A gdy ekwipunek się wyświetla, to ma się również pokazać kursor myszy. Niestety, gdy chcę to przetestować, włączam ekwipunek, a kursor się pokazuje dosłownie na ułamek sekundy i znika. Jak mogę to naprawić? Poniżej wrzucam skrypt, który wyświetla ekwipunek i kursor.

Kopiuj
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CanvasEquipment : MonoBehaviour {

    private Canvas equipment;
	void Start ()
    {
        equipment = (Canvas)GetComponent<Canvas>();
        equipment.enabled = false;
	}
	
	
	void Update ()
    {
   
		if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;
            Cursor.visible = !equipment.enabled;

          
            if(equipment.enabled)
            {
                
                Cursor.lockState = CursorLockMode.None;
                Cursor.visible = true;
                Time.timeScale = 0;
            } else {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible = false;
                Time.timeScale = 1;
            }
        }
	}
}
fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0
Kopiuj
            equipment.enabled = !equipment.enabled;
            Cursor.visible = !equipment.enabled;

tu masz blad

equipment.enabled bedziesz miec false wiec w equipment.enabled robi się true nastepnie masz

Cursor.visible = !equipment.enabled;

ktore daje Ci false (bo ustawiles na true wczesniej linijke) a nastepnie masz

Kopiuj
                Cursor.visible = false;

w else

usun Cursor.visible = !equipment.enabled; i powinno dzialac

XM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0
fasadin napisał(a):
Kopiuj
            equipment.enabled = !equipment.enabled;
            Cursor.visible = !equipment.enabled;

tu masz blad

equipment.enabled bedziesz miec false wiec w equipment.enabled robi się true nastepnie masz

Cursor.visible = !equipment.enabled;

ktore daje Ci false (bo ustawiles na true wczesniej linijke) a nastepnie masz

Kopiuj
                Cursor.visible = false;

w else

usun Cursor.visible = !equipment.enabled; i powinno dzialac

Niestety nie pomogło. Ciągle to samo :/

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

wiec zrob tak. W podpunktach bedzie jaki kod masz wrzucac

Kopiuj
    void Update ()
    {
        Cursor.visible = true;

        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;

            if(equipment.enabled)
            {
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
            }
        }
    }
Kopiuj
    void Update ()
    {
        Cursor.visible = true;
        Cursor.lockState = CursorLockMode.None;

        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;

            if(equipment.enabled)
            {
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
            }
        }
    }
Kopiuj
    void Update ()
    {
        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;

            if(equipment.enabled)
            {
                Cursor.visible = true;
                Cursor.lockState = CursorLockMode.None;
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
            }
        }
    }
Kopiuj
    void Update ()
    {
        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;

            if(equipment.enabled)
            {
                Cursor.visible = true;
                Cursor.lockState = CursorLockMode.None;
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
                Cursor.visible = false;
            }
        }
    }
Kopiuj
    void Update ()
    {
        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;

            if(equipment.enabled)
            {
                Cursor.visible = true;
                Cursor.lockState = CursorLockMode.None;
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
                Cursor.visible = false;
                Cursor.lockState = CursorLockMode.Locked;
            }
        }
    }

wykonaj wszystkie kroki, raczej powinienes dostrzec zmiane jaka sie dzieje (w sensie co dodaje w kodzie) i powiedz mi czy dziala czy przy ktorym zaczyna nie dzialac

Bo moim zdaniem albo juz przy 1) Ci nie dziala albo powinno dzialac przy kodzie 5)

Nie musisz cytowac odpowiedzi ktora jest zaraz powyzej...

NI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

A jakbyś zrobił tego if'a od kursora bezpośrednio do update to dalej by znikał?
W sensie coś takiego:

Kopiuj
void Update ()
    {
            if(equipment.enabled)
            {

                Cursor.lockState = CursorLockMode.None;
                Cursor.visible = true;
                Time.timeScale = 0;
            } else {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible = false;
                Time.timeScale = 1;
            }
        if(Input.GetKeyUp(KeyCode.P))
        {
            equipment.enabled = !equipment.enabled;
        }
    }
XM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

fasadin, do drugiego kodu jakoś działa, a od trzeciego znowu to samo

Nienawisc, twój kod też pięknie śmiga :D Dzięki :D

Temat można zamknąć ;)

XM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
0

Problem powrócił, nie wiadomo dlaczego. Tym razem znika i miga co jakiś czas po wyświetleniu ekwipunku. Skrypt ten sam, który działał normalnie. Może to być wina Unity?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.