闲置 2 分钟后重新开始游戏
Restart game after after 2 minutes of inactivity
我正在尝试弄清楚如何开始编写一段用于侦听用户 activity 的代码。如果几分钟后完全没有 activity,我希望游戏重新开始。有人可以推荐一个好的起点来实现这样的工作吗?
假设这是关于统一api,你可以通过更新方法设置一个定时器。在 Update 方法中使用 Time.deltaTime 来创建一个计时器,一旦经过的时间过去,就做你想做的事。这里的技巧是根据您的情况通过 mouse/keyboard 检查任何输入。如果满足键盘或鼠标输入,则与更新方法中已经过去的时间相比,将已经过去的几分钟重置为 0。
一种方法是利用 Invoke 函数。
void Start()
{
RestartGameInvoke();
}
void RestartGameInvoke()
{
CancelInvoke ();
Invoke ("RestartGame", 10);
}
void RestartGame()
{
//
}
您可以调用RestartGameInvoke();如果有任何用户 activity 发生。如果没有 activity 发生,那么游戏将在 10 秒后重新开始。
如果您想知道如何从任何地方捕获所有输入,请查看
Input.anyKeyDown
http://docs.unity3d.com/ScriptReference/Input-anyKeyDown.html
此外你还可以检查鼠标位置是否与上一帧相同。将此与@Neeraj Kumar 的回答结合使用,即
private Vector3 prevMousePosition = Vector3.zero;
void Update()
{
if(Input.anyKeyDown || Input.mousePosition != prevMousePosition)
RestartGameInvoke();
prevMousePosition = Input.mousePosition;
}
我正在尝试弄清楚如何开始编写一段用于侦听用户 activity 的代码。如果几分钟后完全没有 activity,我希望游戏重新开始。有人可以推荐一个好的起点来实现这样的工作吗?
假设这是关于统一api,你可以通过更新方法设置一个定时器。在 Update 方法中使用 Time.deltaTime 来创建一个计时器,一旦经过的时间过去,就做你想做的事。这里的技巧是根据您的情况通过 mouse/keyboard 检查任何输入。如果满足键盘或鼠标输入,则与更新方法中已经过去的时间相比,将已经过去的几分钟重置为 0。
一种方法是利用 Invoke 函数。
void Start()
{
RestartGameInvoke();
}
void RestartGameInvoke()
{
CancelInvoke ();
Invoke ("RestartGame", 10);
}
void RestartGame()
{
//
}
您可以调用RestartGameInvoke();如果有任何用户 activity 发生。如果没有 activity 发生,那么游戏将在 10 秒后重新开始。
如果您想知道如何从任何地方捕获所有输入,请查看
Input.anyKeyDown
http://docs.unity3d.com/ScriptReference/Input-anyKeyDown.html
此外你还可以检查鼠标位置是否与上一帧相同。将此与@Neeraj Kumar 的回答结合使用,即
private Vector3 prevMousePosition = Vector3.zero;
void Update()
{
if(Input.anyKeyDown || Input.mousePosition != prevMousePosition)
RestartGameInvoke();
prevMousePosition = Input.mousePosition;
}