Time.timeScale = 0f;当我 运行 unity 时没有暂停我的游戏?

Time.timeScale = 0f; not pausing my game when I run it in unity?

我正在尝试为暂停菜单制作一个脚本,我尝试使用 Time.timeScale 并且当我 运行 统一时它不会暂停游戏。我有另一个脚本,它是一个脚本游戏,它也使用 Time.timeScale = 0f; 并且当我 运行 它时它工作正常。我检查了 TimetimsScale 的 Debug.Log,它保持在 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. 您代码中的某处也控制了 Time.timeScale。你应该检查它的引用。或使用 Debug.Log 函数直接检查它的值。 如果您的脚本被添加两次(或从未添加),也会发生这种情况。通过在项目选项卡中右键单击脚本文件并 select Find References In Scene.
  2. 检查脚本的引用
  3. 你的逻辑可能不受Time.timeScale的控制。

首先,Time.timeScale = 0f;并不意味着一切都会停止。

它只影响关于 'Time'(Time.deltaTime、动画序列、WaitForSeconds class 等)

的逻辑

例如,如果您在没有 Time.deltaTime 的情况下使用 Update 函数(或 yield retun null 循环协程),那将不会随着时间刻度为零而停止。