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;
}
我在您发布的代码中找不到任何逻辑错误。所以有两种可能。
- 您代码中的某处也控制了
Time.timeScale
。你应该检查它的引用。或使用 Debug.Log
函数直接检查它的值。
如果您的脚本被添加两次(或从未添加),也会发生这种情况。通过在项目选项卡中右键单击脚本文件并 select Find References In Scene
. 检查脚本的引用
- 你的逻辑可能不受
Time.timeScale
的控制。
首先,Time.timeScale = 0f;
并不意味着一切都会停止。
它只影响关于 'Time'(Time.deltaTime
、动画序列、WaitForSeconds
class 等)
的逻辑
例如,如果您在没有 Time.deltaTime
的情况下使用 Update
函数(或 yield retun null
循环协程),那将不会随着时间刻度为零而停止。
我正在尝试为暂停菜单制作一个脚本,我尝试使用 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;
}
我在您发布的代码中找不到任何逻辑错误。所以有两种可能。
- 您代码中的某处也控制了
Time.timeScale
。你应该检查它的引用。或使用Debug.Log
函数直接检查它的值。 如果您的脚本被添加两次(或从未添加),也会发生这种情况。通过在项目选项卡中右键单击脚本文件并 selectFind References In Scene
. 检查脚本的引用
- 你的逻辑可能不受
Time.timeScale
的控制。
首先,Time.timeScale = 0f;
并不意味着一切都会停止。
它只影响关于 'Time'(Time.deltaTime
、动画序列、WaitForSeconds
class 等)
例如,如果您在没有 Time.deltaTime
的情况下使用 Update
函数(或 yield retun null
循环协程),那将不会随着时间刻度为零而停止。