2016-05-12 5 views
0

Ich habe Probleme mit dem Erreichen der else-Anweisung in Update Methode und ich weiß nicht, wie man diese Uhr stoppen. S Die startTime ist in Sekunden. Wenn Sie es 90.0f machen, werden Sie 1,30 Minuten haben. Das Problem ist, ich muss diese Uhr stoppen, wenn die 0:0.0 erreicht.Zeit Countdown nicht bei 0: 0.0 und es erreicht nie die Else-Anweisung

public Text TimerText; 
private float startTime = 3.0f; 
private bool start = false; 
private float _time; 
private float _minutes, _seconds; 

// Use this for initialization 
void Start() 
{ 
    start = false; 
    startTime = 3.0f; 
} 

// Update is called once per frame 
void Update() 
{ 
    // if (start) 
    // return; 
    if (startTime > 0.0f) 
    { 
     _time = startTime - Time.time; // ammount of time since the time has started 
     _minutes = (int)_time/60; 
     _seconds = _time % 60; 
     TimerText.text = _minutes + ":" + _seconds.ToString("f1"); 
    } 
    else 
     Debug.Log("we are here"); 
} 

private void CheckGameOver() 
{ 
    Debug.Log("gameover"); 
} 

public void StartTime() 
{ 
    TimerText.color = Color.black; 
    start = true; 
} 
+0

Ich kann nicht sehen, wo Sie jemals 'startTime' ändern –

Antwort

3

Verwenden Time.deltaTime statt Time.time und Änderung:

if (_time> 0.0f) 
{...} 

hinzufügen _time = startTime in Start()

+0

Danke. Es funktionierte. :) – MoHacky

0

Es wird empfohlen, Time.deltaTime zu verwenden wie Pawel in seiner Antwort hat.

Ich weiß, dass dieses Problem bereits gelöst ist, aber nur für den Fall, dass Sie wissen möchten, warum Ihr Code nicht funktioniert, das ist, weil Sie if (startTime > 0.0f), startTime in der if-Anweisung dekrementieren sollten. Wenn Sie dies nicht tun, wird startTime>0 immer true sein, was bedeutet, dass die if-Anweisung für immer ausgeführt wird.

Sie können dies immer noch beheben, indem Sie einfach Ihre if (startTime > 0.0f) durch if (Time.time < startTime) ersetzen. Du musst nicht mehr dekrementieren, aber es wird funktionieren.

Verwandte Themen