Меню паузы не работает - UNITY - PullRequest
0 голосов
/ 06 июня 2018

У меня странная проблема с моим меню паузы.Когда я нажимаю ESC, он открывает мое меню и останавливает «игру», кроме персонажей.Я использую Time.TimeScale = 0f;.Я видел, что это проблема с TimeScale, которая влияет на все «в игре», и если он не работает на моих персонажах, это потому, что они не в том же TimeScale.

Я используюUNITY 3D 5.6.0 с Visual Studio 2017.

Мой код:

public static bool pause = false;
public GameObject pauseMenu;

void Update () {
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        if(pause)
        {
            Continuer();
        }
        else
        {
            Pause();
        }
    }
}

public void Continuer()
{
    pauseMenu.SetActive(false);
    Time.timeScale = 1f;
    pause = false;
}
public void Pause()
{
    pauseMenu.SetActive(true);
    Time.timeScale = 0f;
    pause = true;
}

Кто-нибудь знает, как приостановить всю игру?

1 Ответ

0 голосов
/ 06 июня 2018

Update() и OnGUI() не зависят от шкалы времени, поэтому на них не влияет установка Time.timeScale на 0.Это влияет только на FixedUpdate().

Как сказано в Документации :

Когда timeScale установлен на ноль, игра в основном приостанавливается , есливсе ваши функции не зависят от частоты кадров . (выделено мной)

Вы должны использовать некоторую логику для ваших Update() вызовов, например:

1) Пусть движения зависят от масштаба времени,Если ваши персонажи двигаются с переводом, сделайте следующее:

transform.Translate(Vector3.forward * Time.deltaTime);

2) Применяйте Update() логику, только если игра не приостановлена:

void Update(){
     if (Time.timeScale == 0)
         return;
     //...
 }

или

void Update(){
     if (pause)
         return;
     //...
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...