I have a very weird problem with a particular loop in a coroutine:
public IEnumerator DestroyCubesGameOver() {
var startingCubeHolder = GameObject.FindWithTag("StartingCubeHolder");
DestroyOutOfCameraCubes();
Debug.Log(cubeGroup.transform.childCount);
for (int i = 0; i < cubeGroup.transform.childCount; i++) {
Debug.Log(i);
Destroy(cubeGroup.transform.GetChild(i).gameObject);
yield return new WaitForSeconds(0.001f);
}
Destroy(startingCubeHolder);
}
The loop starts doing its thing and it needs to do it 100 times for example. However it stops after going about halfway and after destroying about half of the objects. Even if I increase the delay for each repeat it still does the same exact thing - needs to repeat itself and destroy 100 objects, ends after destroying just 50. What is causing this?
Edit: If I make it just a void
method it destroys all of the objects.
Edit 2: This loop was initially a foreach
but I rewrote it to try the other way - same thing.
continue;
after youryield
statement. \$\endgroup\$