2017-07-29 68 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

謝謝,修復它。 –