Countdown not working

Hello,
I have written a scipt for the countdown before beginning a game

using UnityEngine;
using System.Collections;

public class CountdownScript : MonoBehaviour {

	public GUIText guiTextCountdown;
	// Use this for initialization
	void Start () {
		Debug.Log("start countdown");
		for(int i=3;i>-1;i--){

			if(i==0){
				guiTextCountdown.text = "GO!";
				Debug.Log("end countdown");
			}
			else{
				guiTextCountdown.text = i.ToString();
				StartCoroutine(Delay(1.0F));
				//Debug.Log(i);
			}
		}
	}
	
	// Update is called once per frame
	void Update () {

		}

	IEnumerator Delay(float waitTime) {
		yield return new WaitForSeconds(waitTime);
	}

		
}

But the 1 second delay between 3…2…1…GO! is not working, not sure why. Help pls

StartCoroutine(Delay(1.0F)); starts a new thread where the main thread doesn’t wait for it to finish. This code will work much better for you:

using UnityEngine;
using System.Collections;
 
public class CountdownScript : MonoBehaviour {
	private float timer = 0;
    public GUIText guiTextCountdown;
    // Use this for initialization
    void Start () {
        Time.timeScale = 0;
        Debug.Log("start countdown");
        for(int i=3;i>-1;i--){
 
            if(i==0){
                guiTextCountdown.text = "GO!";
                Time.timeScale = 1;
                Debug.Log("end countdown");
            }
            else if(timer >= 1){
                guiTextCountdown.text = i.ToString();
				timer = 0;
            }
        }
    }
	
	void Update()
	{
		timer += Time.deltaTime;
	}
}