我在下面写了“后退”按钮事件的代码。
void Update()
{
if (Input.GetKey(KeyCode.Escape))
{
SceneManager.LoadScene("PreviousLevel");
}
}
几乎在所有情况下,这都很好。但我发现了一个小问题。当用户暂停游戏时,这不起作用。当用户暂停游戏时,我会执行Time.timeScale = 0。最初,我考虑修改暂停方法而不是做Time.timeScale = 0,使用bool变量并相应地修改其他暂停逻辑。但后来我也意识到我有超过14个协同例程,其逻辑严重依赖于Time.timeScale,修改它们需要花费很多时间。它们严重依赖于time.timeScale。
我想知道,还有其他方法我可以回写按钮逻辑,而且不依赖于Time.timeScale。
答案 0 :(得分:2)
它应该工作,Unity中的输入轮询不依赖于时间尺度。
尝试在条件中插入Debug.Log
,您应该在控制台中看到它。
注意你是否将if放在FixedUpdate
而不是Update
中:在这种情况下,当时间刻度为0时,FixedUpdate
被完全跳过,它将无效。
但是,如果你想要一个“脏”技巧,你可以将时间刻度减慢到一个非常低的数字,而不使用0,即:10e-8。但要小心使用它,因为它会导致不必要的行为。