Unity Timer zurücksetzen?

1 Antwort

Wenn man dann aber die Szene neu startet läuft der Timer einfach weiter.

Liegt ja an der finished bool. Wenn der false ist (siehe Start()) und du das zu dem noch in der Update() ist das kein Wunder, oder?

Wie macht man es dass er wieder bei Null startet?

Wenn man die funktion von Time.time ansieht, stellt man folgendes fest:

https://docs.unity3d.com/ScriptReference/Time-time.html

float t = Time.time + startTime;

Time.time ist die Zeit des derzeitigen Frames. Zu dem ist deine addierte startTime immer 0 somit ist float t immer Framezeit.

Somit wird bei dem restart deiner Scene nichts verändert und läuft einfach weiter.

Lösung?

Es gibt einige!

void Start()
{
  startTime = Time.time;
}

In Update()

  float t = Time.time - startTime;

Auch wenn ich das persönlich so nicht machen würde.

Ich würde das eher in eine Co-Routine machen, da kann man dann besser steuern, wann er starten und stoppen soll etc.

Woher ich das weiß:Berufserfahrung