Time.timeScale = 0f; не приостанавливает мою игру, когда я запускаю ее в единстве? - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь создать сценарий для меню паузы, и я пытаюсь использовать Time.timeScale, и он не приостанавливает игру, когда я запускаю ее в единстве. У меня есть другой сценарий, который представляет собой сценарий игры поверх, и он также использует Time.timeScale = 0f;, и он отлично работает, когда я его запускаю. Я проверил Debug.Log для Timetimscale, и он остался на 1. Это мой код:

void Update()
{
    if(Input.GetKeyDown(KeyCode.Escape))
    {
        
        if (gamePaused)
        {
            Play();
        }
        else
        {
            Paused();
        }
    }
}

public void Paused ()
{
    gamePaused = true;
    pauseMenu.SetActive(true);
    Time.timeScale = 0f;
}
public void Play()
{
    Time.timeScale = 1f;
    pauseMenu.SetActive(false);
    gamePaused = false;
}

1 Ответ

0 голосов
/ 04 августа 2020

Я не могу найти никаких логических ошибок в опубликованном вами коде. Итак, есть две возможности.

  1. Где-то в вашем коде также контролируется Time.timeScale. Вы должны проверить ссылки на него. или проверьте его значение напрямую с помощью функции Debug.Log. А также это может произойти, если ваш скрипт добавлен дважды (или никогда не добавлялся). Проверьте ссылку на свой сценарий, щелкнув правой кнопкой мыши файл сценария на вкладке проекта и выбрав Find References In Scene.
  2. Ваш лог c может не контролироваться Time.timeScale.

Первый из all, Time.timeScale = 0f; не означает, что все будет остановлено.

Это влияет только на logi c, что о «Time» (Time.deltaTime, Animation Sequence, WaitForSeconds class, et c )

Например, если вы используете Update Function (или yield retun null l oop Coroutine) без Time.deltaTime, это не остановится с нулевым значением timeScale.

...