WaitForSeconds not running

Hello, I am trying to start this coroutine, and from the debug log it shows the WaitInSeconds being called, but it doesn’t wait and counts quickly to 3. What am I doing wrong? Could this be related to the frame rate?

Also, on line 27, if I decrement the countdown_timer going from 3 to 1, Unity just freezes and starts to consume cpu cycles and I end up killing unity. I’m not seeing an infinite loop here, unless there’s something else going on?

using UnityEngine;
using System.Collections;

public class Countdown : MonoBehaviour {

	public static int countdown_timer;
	private TypogenicText tText;

	// Use this for initialization
	void Start () {
	
		tText = GetComponent<TypogenicText>();
		countdown_timer = 1;


	}
	
	// Update is called once per frame
	void Update () {

		while(countdown_timer < 4)
		{
			Debug.Log("Countdown for loop: " + countdown_timer);
			tText.Text = countdown_timer.ToString();
			tText.RebuildMesh();
			
			countdown_timer += 1;
			StartCoroutine(WaitInSeconds(1.0f));
		}
	
	}

	IEnumerator WaitInSeconds(float secs)
	{
		Debug.Log ("WaitInSeconds for " + secs);
		yield return new WaitForSeconds(secs);

	}
}

Any help is appreciated, thanks!

Found the following. Looks like calling the coroutine from update is the way to go, this way the WaitForSeconds function works. Guess I didn’t grasp how a coroutine works.

You can’t start a coroutine inside an update function. You’d need to call the coroutine from another function and then have it loop back to the update. I’d provide code but I have no idea how to code with C# sorry :confused: