我正在 Unity 中制作游戏,我想检查游戏玩家是否点击了任何内容。因此,如果玩家空闲了一定时间,比如说 20 秒,那么我想播放一个动画来指示玩家处于空闲状态。
如果您想为此目的创建一个全新的脚本......
public static class IdleCheck
{
public static int Timeout { get; set; }
private static float lastAction;
public static void ReportAction ()
{
lastAction = Time.time;
}
public static bool IsIdle
{
get { return (Time.time - time) > Timeout; }
}
}
每次用户报告某个操作(例如单击)时,只需调用
IdleCheck.ReportAction()
并在需要的地方使用 IdleCheck.IsIdle
。
您应该尝试使用 e.mousePosition 等事件来查看它是否被移动,并设置一个 20 秒的计数器。如果 e.mousePosition 事件在 20 秒内未触发,则播放空闲动画。请参阅此处的 Unity 文档:https://docs.unity3d.com/ScriptReference/Event-mousePosition.html
我认为这样的事情应该可以做到
当您获得点击时,anyClick 应该为 true。
float timeSinceLastClick = 0.0f;
void Update()
{
timeSinceLastClick += Time.deltaTime;
if(anyClick)
{
timeSinceLastClick = 0.0f;
anyClick = false;
}
if(timeSinceLastClick > 20.0f)
{
//Play Idle animation
}
}