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문을 돌리는 방식으로 해결했다.