当Time.TimeScale = 0时,后退按钮的工作方法不起作用

时间:2017-03-13 17:14:07

标签: unity3d unity5

我在下面写了“后退”按钮事件的代码。

void Update()
{
    if (Input.GetKey(KeyCode.Escape))
    {
        SceneManager.LoadScene("PreviousLevel");
    }  
}

几乎在所有情况下,这都很好。但我发现了一个小问题。当用户暂停游戏时,这不起作用。当用户暂停游戏时,我会执行Time.timeScale = 0。最初,我考虑修改暂停方法而不是做Time.timeScale = 0,使用bool变量并相应地修改其他暂停逻辑。但后来我也意识到我有超过14个协同例程,其逻辑严重依赖于Time.timeScale,修改它们需要花费很多时间。它们严重依赖于time.timeScale。

我想知道,还有其他方法我可以回写按钮逻辑,而且不依赖于Time.timeScale。

1 个答案:

答案 0 :(得分:2)

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

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

注意你是否将if放在FixedUpdate而不是Update中:在这种情况下,当时间刻度为0时,FixedUpdate被完全跳过,它将无效。

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