3, 2, 1 GO!

So I’m trying to get a 3, 2, 1 GO! thing going on but It just doesn’t seem to be working, no errors just not working, any help?

	private bool showCountdown;
	private string countdown = "";
	
	void Start () {
		instance = this;
		GameEventManager.GameStart += GameStart;
		GameEventManager.GameOver += GameOver;
		gameOverText.enabled = false;
	}

	void Update () {
		if(Input.GetButtonDown("Jump")){
			GetReady();
			GameEventManager.TriggerGameStart();
		}
		if (Input.touchCount > 0){
			GameEventManager.TriggerGameStart();
		}
	}
	
	IEnumerator GetReady () {
		showCountdown = true;
			
		countdown = "3";
		yield return new WaitForSeconds (1.5f);
		
		countdown = "2";
		yield return new WaitForSeconds (1.5f);
		
		countdown = "1";
		yield return new WaitForSeconds (1.5f);
			
		countdown = "GO!";
		yield return new WaitForSeconds (1.5f);
		

		showCountdown = false;
		countdown = "";	
					
	}
	
	void OnGUI(){
		if (showCountdown){    
       		GUI.color = Color.red;    
       		GUI.Box (new Rect (Screen.width / 2 - 100, Screen.width / 2, 200, 175), "GET READY");
				
       		GUI.color = Color.white; 
       		GUI.Box (new Rect (Screen.width / 2 - 90, Screen.width / 2, 180, 140), countdown);
    	}    
	}

To run a coroutine you need to call StartCoroutine() rather than call the routine directly. For example:

StartCoroutine(GetReady());

you could use this code instead,

var guiCountDown : GUIText;
var countMax : int;
private var countDown : int;

function Start(){

	guiCountDown.enabled=true;
	GameStart();
}

function Update () {
}

function GameStart(){
	var car = gameObject.Find("NAME_OF_CAR");
	var drivingScript = car.GetComponent("NAME_OF_DRIVING_SCRIPT");
	drivingScript.enabled=false;
	
	
	
	for (countDown = countMax; countDown>0;countDown--){
		guiCountDown.text = countDown.ToString();
		yield WaitForSeconds(1);
	}
	
	guiCountDown.enabled=false;
	drivingScript.enabled=true;
    
}

In fact you have to call the coroutine whit

StartCoroutine("GetReady"); 

that should works