Po wyświetleniu ekwipunku, kursor raz mignie i znika

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.

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;
            }
        }
	}
}
0
            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

                Cursor.visible = false;

w else

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

0
fasadin napisał(a):
            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

                Cursor.visible = false;

w else

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

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

1

wiec zrob tak. W podpunktach bedzie jaki kod masz wrzucac

    void Update ()
    {
        Cursor.visible = true;

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

            if(equipment.enabled)
            {
                Time.timeScale = 0;
            } else {
                Time.timeScale = 1;
            }
        }
    }
    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;
            }
        }
    }
    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;
            }
        }
    }
    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;
            }
        }
    }
    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...

0

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

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;
        }
    }
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ąć ;)

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?

1 użytkowników online, w tym zalogowanych: 0, gości: 1