Cześć, mam mały problem z wykorzystaniem coroutine. Wykorzystuję ją w proceduralnym generowaniu świata (takim jak mineraft).
IEnumerator VisualizeChunks()
{
while (chunksToVisualizeList.Count > 0)
{
Debug.Log("1");
AddNewBlocksToArray(chunksToVisualizeList[0].xGlobalPos / 6, chunksToVisualizeList[0].zGlobalPos / 6);
while (chunksToVisualizeList.Count > 1)
{
Debug.Log("Elementy: " + chunksToVisualizeList.Count);
AddNewBlocksToArray(chunksToVisualizeList[1].xGlobalPos / 6, chunksToVisualizeList[1].zGlobalPos / 6);
chunksToVisualizeList[0].VisualizeChunk();
chunksToVisualizeList.RemoveAt(0);
Debug.Log("2");
yield return null;
}
Debug.Log("3");
Debug.Log("elementy: " + chunksToVisualizeList.Count);
chunksToVisualizeList[0].VisualizeChunk();
chunksToVisualizeList.RemoveAt(0);
yield return null;
}
Debug.Log("koniec");
}
Problem polega na tym, że po wykonaniu ostatniej linijki w pętli nadrzędnej, liczyłem że zawsze będzie się wznawiać w tej linijce (czyli sprawdzac warunek w while czy lista niepusta).
Z jakiegoś powodu konsola wyrzuca mi ArgumentOutOfRangeException.
Ostatnie 5 linijek w konsoli to:
3
elementy: 1
3
elementy: 0
Error
Byłbym wdzięczny gdyby ktoś mi wyjaśnił gdzie popełniam błąd