2017-07-29 1 views
0

Ich entwickle in Unity, C#, und ich habe ein bisschen Code, der auf der Mausposition nach Spieleraktivität überprüft und es funktioniert gut, aber ich muss auch Spieleraktivität überprüfen auf einem Touchscreen (nicht ein Handy-Touchscreen, sondern ein Touchscreen an einem PC). Wie soll ich den Code ändern, den ich unten habe, um auch mit Touch zu arbeiten?Konvertieren von Mauspositionsfunktionalität mit Touchscreen arbeiten

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

Funktioniert es nicht für den angeschlossenen Touchscreen? Was funktioniert nicht genau? – Programmer

+0

Nun, ich habe einen Inaktivitäts-Timer, der nach einer bestimmten Inaktivitätsmenge instanziiert, der rückwärts zählt und das Spiel zurücksetzt. Es funktioniert, wenn Sie eine Maus verwenden, aber nicht mit Berührung. Ich habe gerade angenommen, dass es keine Position registriert, weil es nach Mausaktivität gesucht hat und Aktivität nicht berührt. – greyBow

+0

Wie wäre es mit 'Input.touches [0] .position'? – Programmer

Antwort

0

Gut für Touch Sie Ihre Inaktivität Timer starten, wenn Sie keine Berührungseingaben erhalten Sie und für x Dauer warten. für zB:

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

Sie verstehen, dass Sie eine Coroutine jeden Frame starten, wenn keine Berührung auf dem Bildschirm ist? Das ist keine gute Sache. Das ist auch nicht, wie man eine Coroutine stoppt. Sie müssen die Referenz speichern und dann die Referenz stoppen. Dies ist in vielerlei Hinsicht fehlerhaft. – Programmer

+0

Danke, repariert es. –