Deff_Dev
[Unity/C#] foreach문에서 컬렉션 수정할 때, 생기는 오류 본문
문제 사항
// 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문을 돌리는 방식으로 해결했다.
'Unity(유니티) > 유니티 공부' 카테고리의 다른 글
[Unity/C#] 어드레서블 (Addressable) 사용 (0) | 2024.07.10 |
---|---|
[Unity/C#] 어드레서블 (Addressable) (0) | 2024.07.06 |
[Unity/C#] 이벤트 호출 안될 때 (0) | 2024.07.04 |
[Unity/C#] 일반화 프로그래밍 (Generic) (0) | 2024.06.29 |
[Unity/C#] AudioMixer를 이용한 볼륨 조절 (0) | 2024.06.26 |