2017-07-29 84 views
0

我正在Unity,C#开发,并且我有一些代码根据鼠标位置检查玩家活动,它运行良好,但我还需要检查玩家活动在触摸屏上(不是手机触摸屏,而是连接到PC的触摸屏)。我应该如何修改下面的代码以使用touch?转换鼠标位置功能与触摸屏一起工作

private void Start() 
    { 
     InvokeRepeating("LastMousePosition", 0, _checkMousePositionTimingInterval); 
    } 

    private void Update() 
    { 
     _currentMousePosition = Input.mousePosition; 
    } 

    void LastMousePosition() 
    { 
     _prevMousePosition = Input.mousePosition; 
    } 

    void CheckPlayerIdle() 
    { 
     if (_currentMousePosition != _prevMousePosition) 
      UserActive = true; 
     else if (_currentMousePosition == _prevMousePosition) 
      UserActive = false; 
    } 
+0

它不适用于连接的触摸屏吗?有什么不正确的工作? – Programmer

+0

嗯,我有一个不活动的计时器,在一定数量的不活动之后进行实例化,这些计时器可以倒计时并重置游戏。它在使用鼠标时有效,但不适用于触摸。我只是假设它没有注册位置,因为它正在寻找鼠标活动而不是触摸活动 – greyBow

+0

'Input.touches [0] .position'如何? – Programmer

回答

0

如果您没有得到任何触摸输入并等待x持续时间,那么您可以启动您的不活动计时器。 例如:

private void Update() 
{ 
    if(Input.touchCount == 0) 
    { 
    if(!checkingForInactivity) 
    { 
     checkingForInactivity = true; 
     myRoutine = StartCoroutine(CheckForInactivity()); 
    } 
    } 
    else 
    { 
    if(checkingForInactivity) StopCoroutine(myRoutine); 
    } 
} 

Ienumrable CheckForInactivity() 
{ 
    yield new waitForSecond(3.0f); 
    //user is inactive 
} 
} 
+0

你确实明白,当屏幕上没有任何触摸时,你会在每一帧都开始一个协程?这不是一件好事。此外,这不是如何停止协程。您需要存储参考,然后停止参考。这在很多方面都存在缺陷。 – Programmer

+0

谢谢,修复它。 –