繁体   English   中英

时间.timeScale = 0f; 当我统一运行游戏时没有暂停我的游戏?

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

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

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

它只影响关于“时间”的逻辑( Time.deltaTime 、Animation Sequence、 WaitForSeconds class 等)

例如,如果您在没有Time.deltaTime的情况下使用Update Function(或yield retun null loop Coroutine),则不会在 timeScale 为零时停止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM