Unity3d Time.TimeScale=0时后退按钮不工作的方法

Unity3d Time.TimeScale=0时后退按钮不工作的方法,unity3d,unity5,Unity3d,Unity5,我已经为后退按钮事件编写了以下代码 void Update() { if (Input.GetKey(KeyCode.Escape)) { SceneManager.LoadScene("PreviousLevel"); } } 在几乎所有情况下,这都是好的。但我发现了一个小问题。当用户暂停游戏时,这不起作用。当用户暂停游戏时,我执行Time.timeScale=0。最初,我考虑修改pause方法,而不是使用Time.timeScale=0,使用bo

我已经为后退按钮事件编写了以下代码

void Update()
{
    if (Input.GetKey(KeyCode.Escape))
    {
        SceneManager.LoadScene("PreviousLevel");
    }  
}
在几乎所有情况下,这都是好的。但我发现了一个小问题。当用户暂停游戏时,这不起作用。当用户暂停游戏时,我执行Time.timeScale=0。最初,我考虑修改pause方法,而不是使用Time.timeScale=0,使用bool变量并相应地修改其他pause逻辑。但后来我也意识到,我有超过14个协例程,它们的逻辑严重依赖于时间。时间刻度和修改这些会花费很多时间。它们严重依赖于时间


我想知道,有没有其他方法可以写回按钮逻辑,并且不依赖于时间。时间刻度。

应该可以,Unity中的输入轮询不依赖于时间刻度

尝试在条件中插入
Debug.Log
,您应该可以在控制台中看到它

请注意,如果将if放入
FixedUpdate
中,而不是
Update
:在这种情况下,它将不起作用,因为当时间刻度为0时,
FixedUpdate
将被完全跳过


然而,如果你想要一个“肮脏”的把戏,你可以将时间刻度降低到一个非常低的数字,而不使用0,即:10e-8。但是要非常小心地使用它,因为它会导致不必要的行为。

它应该可以工作,Unity中的输入轮询不依赖于时间尺度

尝试在条件中插入
Debug.Log
,您应该可以在控制台中看到它

请注意,如果将if放入
FixedUpdate
中,而不是
Update
:在这种情况下,它将不起作用,因为当时间刻度为0时,
FixedUpdate
将被完全跳过

然而,如果你想要一个“肮脏”的把戏,你可以将时间刻度降低到一个非常低的数字,而不使用0,即:10e-8。但是要小心使用,因为它会导致不必要的行为