Deff_Dev

[Unity/C#] foreach문에서 컬렉션 수정할 때, 생기는 오류 본문

Unity(유니티)/유니티 공부

[Unity/C#] foreach문에서 컬렉션 수정할 때, 생기는 오류

Deff_a 2024. 7. 4. 00:30

문제 사항

// foreach 루프문은 컬렉션 반복중에 컬렉션 수정이 안된다.
foreach (Enemy enemy in SpawnEnemyList)
{
   SpawnEnemyList.Remove(enemy);
   if(enemy.gameObject.activeSelf)
   enemy.gameObject.SetActive(false);
}

 

foreach문으로 컬렉션을 반복하는 있는 중에 해당 컬렉션을 수정하게 된다면 오류가 발생한다.

 

오류


해결

for (int i = SpawnEnemyList.Count - 1; i >= 0; i--)
{
    Enemy enemy = SpawnEnemyList[i];
    SpawnEnemyList.RemoveAt(i);
    
    if (enemy.gameObject.activeSelf)
        enemy.gameObject.SetActive(false);
}

 

리스트의 마지막부터 첫 번째까지 for문을 돌리는 방식으로 해결했다.