- Home /
For Loop In Coroutine Help
When hit by the enemy I'm trying to have a blinking effect so i'm using this coroutine:
private IEnumerator DamageBlink()
{
SkinnedMeshRenderer[] MeshRenderers = GetComponentsInChildren<SkinnedMeshRenderer>();
for (int i = 0; i < 20; i++)
{
foreach (SkinnedMeshRenderer mesh in MeshRenderers)
{
mesh.enabled = false;
}
yield return new WaitForSeconds(GameManager.Instance.BlinkTime);
foreach (SkinnedMeshRenderer mesh in MeshRenderers)
{
mesh.enabled = true;
}
}
IsInvincible = false;
}
I've been using BlinkTime in game manager to mess with the interval at run time and test it. I've used 0.0-0.5 but any value I use, the model only blinks once. If I use a high BlinkTime value, the model disappears for a long time before reappearing. I am only calling this coroutine once when the object is attacked by the enemy. It should blink twenty times but it's only doing it once.
Comment
Best Answer
Answer by SpiralConDave · Jul 18, 2018 at 09:26 PM
Add a copy of the 'yield return' line after the second 'for' loop.
What's happening is enabled goes false, you wait, enabled goes true and immediately (top of loop) goes false again.
Your answer
![](https://koobas.hobune.stream/wayback/20220612171028im_/https://answers.unity.com/themes/thub/images/avi.jpg)