在初始互动后开始游戏计时器
本文关键字:开始 游戏 计时器 | 更新日期: 2023-09-27 18:06:56
我已经创建了一个空闲警告,通知用户由于不活跃游戏将很快重新启动,但我仍然有一个问题-一旦游戏重新启动计时器触发,而不是在用户第一次开始交互(第一次触摸屏幕)后触发。我的代码中遗漏了什么?
private Vector3 prevMousePosition = Vector3.zero;
public GameObject timeOutWarning;
void Start()
{
prevMousePosition = Input.mousePosition;
}
void Update()
{
if(Input.anyKeyDown || Input.mousePosition != prevMousePosition)
{
StartGameTimer();
timeOutWarning.SetActive(false);
}
prevMousePosition = Input.mousePosition;
}
void StartGameTimer()
{
CancelInvoke ();
Invoke ("ShowRestartWarning", 10);
}
void ShowRestartWarning()
{
timeOutWarning.SetActive(true);
Debug.Log ("Restart Warning Popup");
CancelInvoke ();
Invoke ("RestartGame", 10);
}
void RestartGame()
{
Debug.Log("Restarting Game Now");
Application.LoadLevel(Application.loadedLevel);
}
问题很可能出在您的第一行代码:
if(Input.anyKeyDown || Input.mousePosition != prevMousePosition)
第一次点击这一行,prevMousePosition
将是0,0
(除非您在其他地方初始化它)。你的鼠标位置不太可能是这样的,所以你会直接触发计时器。
最明显的解决方案是在Update
第一次被调用之前设置一个有用的值:
void Start()
{
previousMousePosition = Input.mousePosition;
}