2017-03-13 1 views
0

Ich habe den folgenden Code für Zurück Schaltfläche Ereignis geschrieben.Methode für die Schaltfläche Zurück funktioniert nicht, wenn Time.TimeScale = 0

void Update() 
{ 
    if (Input.GetKey(KeyCode.Escape)) 
    { 
     SceneManager.LoadScene("PreviousLevel"); 
    } 
} 

In fast allen Fällen ist das in Ordnung. Aber ich habe ein kleines Problem gefunden. Wenn der Benutzer das Spiel pausiert, funktioniert das nicht. Wenn der Benutzer das Spiel pausiert, mache ich Time.timeScale = 0. Anfangs dachte ich darüber nach, die Pausemethode zu ändern und anstatt Time.timeScale = 0 zu verwenden, benutze eine bool-Variable und ändere andere Pausenlogik entsprechend. Aber dann erkannte ich auch, dass ich mehr als 14 Co-Routinen habe, deren Logik stark von Time.timeScale abhängig ist und deren Änderung viel Zeit in Anspruch nehmen wird. Sie sind stark abhängig von time.timeScale.

Ich wollte wissen, gibt es eine andere Methode, bei der ich Knopflogik zurückschreiben kann und die nicht von Time.timeScale abhängig ist.

Antwort

2

Es sollte funktionieren, Polling in Unity ist nicht abhängig von der Zeitskala.

Versuchen Sie, indem Sie eine Debug.Log in den Zustand einfügen, und Sie sollten es in der Konsole sehen.

Pass auf, wenn Sie das, wenn innerhalb FixedUpdate setzen und nicht Update: in diesem Fall wird es nicht funktionieren, da FixedUpdate vollständig übersprungen, wenn Zeitskala ist 0.

Wenn Sie jedoch einen „schmutzigen“ Trick wollen , können Sie die Zeitskala auf eine sehr niedrige Zahl verlangsamen, ohne 0 zu verwenden, dh: 10e-8. Aber verwenden Sie es mit großer Sorgfalt, da es zu unerwünschtem Verhalten führen kann.

Verwandte Themen