Coroutine Yielding Forever?

For some reason when I start this coroutine, it gets to the yield an never continues after that, any idea as to why?

	public IEnumerator ShowDamage () {
		thisRenderer.material.color = damagedColor;
		
		float showDamageTimer = damageVisibilityTime;
		
		while (showDamageTimer > 0) {
			showDamageTimer -= Time.deltaTime;
			Debug.Log(Time.time);
			yield return new WaitForSeconds(0);
			Debug.Log(Time.time);
			thisRenderer.material.color = Color.Lerp(healthyColor, damagedColor, showDamageTimer);
		}
	}

How do you call ShowDamage?

From another script with a variable for the script with the IEnumerator in it:

StartCoroutine(theCoroutineScript.ShowDamage());

Ok, figured it out I think.

I had to call a function in the coroutine script that started the coroutine, instead of trying to start it remotely.

in C# to wait one frame ( which i’m guessing is what you are trying to get by waiting zero seconds? ) you just

yield return null;

Ah, thank you!