- Home /
На вопрос ответили. Правильный ответ был принят
Timer with Coroutine
So I've been trying to make a timer with coroutine. Duration should be 0, but timerUi.SetActive(false) don't work and minimum value of duration equal 1.
 IEnumerator Timer(int duration)
 {
     timerUi.SetActive(true);
     while (duration >= 0)
     {
         timerText.text = duration.ToString();
         duration--;
         yield return new WaitForSeconds(1f);
     }
     yield return new WaitForSeconds(1f);
     timerUi.SetActive(false);
 }
Answer by nikolaisedov92 · Dec 07, 2019 at 11:37 AM
I don't know how it will be more correct, but this work
 IEnumerator Timer(float duration)
     {
         timerUi.SetActive(true);
 
         while (duration >= 0)
         {
             timerText.text = duration.ToString("0");
             duration -= Time.deltaTime;
 
             yield return null;
         }
 
         timerUi.SetActive(false);
     }
Answer by jleemans · Dec 08, 2019 at 11:06 AM
With duration = 0, you will wait 2 sec. Try :
 IEnumerator Timer(int duration)
 {
     timerUi.SetActive(true);
     while (duration > 0)
     {
         timerText.text = duration.ToString();
         --duration;
         yield return new WaitForSeconds(1f);
     }
     timerUi.SetActive(false);
 }
What do you mean by 'timerUi.SetActive(false) don't work' ?
Answer by keni4 · Dec 07, 2019 at 10:44 AM
Hi, @nikolaisedov92 . If your duration parameter set to 0, the loop runs one time - you get 1 sec wait, and after loop you have "wait one more second". So by the end you have 2 sec total wait.
Try this:
  IEnumerator Timer(int duration)
          {
              timerUi.SetActive(true);
              while (duration >= 0)
              {
                  timerText.text = duration.ToString();
                  yield return new WaitForSeconds(1f);
                  duration--;
              }
              timerUi.SetActive(false);
          }
Hi, @keni4. Nothing changed. After while() looping coroutine stop. I tried print() after while() looping and it don't work :)
Follow this Question
Related Questions
How to set timer for WWW helper? 1 Answer
SpeedBoost won't reset : Problem with either WaitForSeconds or Coroutine (Solved) 2 Answers
How do I make the timeScale not affect the timer? 1 Answer
Trying to make a timer work.. 0 Answers
countdown timer 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                