2016-07-30 25 views
1

Ich habe Code, der einen Timer in meinem Unity-Projekt ausführt, der Timer durchläuft mehrere Szenen mit DateTime, ich versuche, die Zeit im Editor sichtbar zu machen, damit ich den Countdown sichtbar machen kann auf der Benutzeroberfläche.Anzeige TimeSpan Timer auf UI Einheit

Hier ist das Skript für den Countdown;

public static class GlobalCountDown 
{ 
    static DateTime TimeStarted; 
    static TimeSpan TotalTime; 

    public static void StartCountDown(TimeSpan totalTime) 
    { 
     TimeStarted = DateTime.UtcNow; 
     TotalTime = totalTime; 
    } 

    public static TimeSpan TimeLeft 
    { 
     get 
     { 
      var result = TotalTime - (DateTime.UtcNow - TimeStarted); 
      if (result.TotalSeconds <= 0) 
       return TimeSpan.Zero;   
       return result; 
     } 
    } 
} 

Und hier ist der Aufruf an das Skript, dass ich in jeder Szene den Timer zu tragen;

GlobalCountDown.StartCountDown (TimeSpan.FromSeconds (8)); 

Die Funktionalität funktioniert, aber ich bin nicht sicher, wie es in der Benutzeroberfläche sichtbar zu machen, habe ich mit der versucht folgende aber ich habe nicht viel Glück;

string timeLeft = GlobalCountDown.TimeLeft.TotalSeconds().ToString("D2"); 

Jede Hilfe oder Beratung mit diesem würde sehr geschätzt werden.

Antwort

1

UI-Textobjekt verwenden.

[SerializeField] Private Text countdownTimer; // will require UnityEngine.UI at top 

aktualisieren countdownTimer ‚s text Eigenschaft jedes Mal, wenn Sie den Timer-Wert ändern/reduzieren.

countdownTimer.text = your_time_left_var.ToString(); 
+0

Fantastisch, der Timer wird jetzt auf der Benutzeroberfläche angezeigt und wird weiterhin zwischen den Szenen Countdown. In dem Moment, in dem der Timer als 00:00:08 angezeigt wird, wenn ich den Timer auf insgesamt 8 Sekunden eingestellt habe, weißt du einen Weg, nur die letzten 2 Nummern anzuzeigen, der Timer wird niemals über 10 Sekunden gehen. Der folgende Code ist, was den Timer sichtbar machte \t [SerializeField] \t private Text countdownTimer; und countdownTimer.text = GlobalCountDown.TimeLeft.ToString(); – Ethranes

+0

Es hängt von Ihrem TimeLeft-Typ ab. Wenn es nur ein ganzzahliger Zähler ist, der Sekunden zählt, sollte es nur eine ganzzahlige Ausgabe sein. Wenn Ihr TimeLeft als Stunde: Minute: zweites Format kommt, sollten Sie die Formatierung in dieser Methode vermeiden. Das Ergebnis zeigt nur die Sekunden an. Verwenden Sie für die Verknüpfung 'String.Trim()' –