- Home /
Make a countdown timer say "go" once it reaches 0
I know this is a simple question, and probably has a simple answer, but I want my timer to go: "3" "2" "1" "GO!" and it only goes: "3" "2" "1" "GO!" "0" "-1" and so on.  public class countDownTimer : MonoBehaviour { public int timeLeft = 60; //Seconds Overall public Text countdown; //UI Text Object void Start () { StartCoroutine("LoseTime"); Time.timeScale = 1; //Just making sure that the timeScale is right } void Update () { countdown.text = ("" + timeLeft); //Showing the Score on the Canvas } //Simple Coroutine IEnumerator LoseTime() { for (int i = 3; i >=0; i--) { yield return new WaitForSeconds (1); timeLeft--; i++; if (timeLeft == 0) { countdown.text = ("go"); // i = 0; }}}} Where it says //i = 0 is the problem, i think. Whenever i uncomment that script piece, it completly stops the timer 
Answer by Hellium · Jan 15, 2020 at 06:41 PM
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class countDownTimer : MonoBehaviour
 {
     private float timeLeft;
     public Text countdown;
 
     void Start()
     {
         timeLeft = 3;
         Time.timeScale = 1; //Just making sure that the timeScale is right
     }
 
     void Update()
     {
         timeLeft -= Time.deltaTime;
         if (timeLeft > 0)
         {
             countdown.text = Mathf.CeilToInt(timeLeft).ToString();
         }
         else if (timeLeft < -1)
         {
             countdown.CrossFadeAlpha(0, 0.2f, true); // Hide text
             enabled = false; // Stop timer
         }
         else
         {
             countdown.text = "Go!";
         }
     }
 }
If you want to keep a coroutine
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class countDownTimer : MonoBehaviour
 {
     public int timeLeft = 3;
     public Text countdown;
 
     void Start()
     {
         StartCoroutine(Countdown(timeLeft));
         Time.timeScale = 1; //Just making sure that the timeScale is right
     }
 
     IEnumerator Countdown(int time)
     {
         WaitForSeconds wait = new WaitForSeconds(1);
         for(; time > 0; --time)
         {
             countdown.text = time.ToString();
             yield return wait;
         }
         countdown.text = "Go!";
         yield return wait;
         countdown.CrossFadeAlpha(0, 0.2f, true); // Hide text
     }
 }
Your answer
 
 
             Follow this Question
Related Questions
countdown timer starts from the begining when i reLaunch the app 1 Answer
Calling methods 0 Answers
How do I implement a timer into this script that will record the total time the player has played. 2 Answers
Start timer with trigger 1 Answer
How to stop the countdown timer when I have collected all the coins? 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                