Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测玩家何时不玩游戏_C#_Unity3d_Character_Monodevelop - Fatal编程技术网

C# 如何检测玩家何时不玩游戏

C# 如何检测玩家何时不玩游戏,c#,unity3d,character,monodevelop,C#,Unity3d,Character,Monodevelop,我正在unity中制作一个游戏,但我正在检查游戏用户是否点击了任何东西。。因此,如果播放机空闲一定时间,比如说20秒,那么我将播放一个动画来指示播放机空闲您应该尝试使用e.mousePosition之类的事件来查看它是否被移动,并设置一个计数器20秒。如果事件e.mousePosition在20秒内未触发,则播放空闲动画。请参阅此处的Unity文档:如果您想为此创建一个全新的脚本 public static class IdleCheck { public static int Time

我正在unity中制作一个游戏,但我正在检查游戏用户是否点击了任何东西。。因此,如果播放机空闲一定时间,比如说20秒,那么我将播放一个动画来指示播放机空闲

您应该尝试使用e.mousePosition之类的事件来查看它是否被移动,并设置一个计数器20秒。如果事件e.mousePosition在20秒内未触发,则播放空闲动画。请参阅此处的Unity文档:

如果您想为此创建一个全新的脚本

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即可。

我认为这样做应该可以

单击时,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
    }
}

当有输入时,可以将DateTime字段设置为DateTime.UtcNow。如果DateTime.UtcNow-lastInput大于20秒,请播放动画。了解游戏的每个人都在玩游戏。还有,你刚刚输掉了比赛。时间。时间。总是用它来计时Unity@Programmer我相信你指的是时间,是这个目的的时间。但是谢谢,我改了。我实际上指的是Time.deltaTime,因为它比Time.Time更准确。只要在每一帧将其添加到计数器中。@程序员,考虑到类不是从Monobehavior派生的,您会怎么做?是什么让您瘦到类不是从MonoB派生的?