ppoyami
ppoyami
ppoyami
전체 방문자
오늘
어제
  • 분류 전체보기 (5)
    • Unity Scripts (1)
    • Unity Engine (2)
    • Unity Core (0)
    • Unity Settings (0)
    • Unity Errors (2)
    • C# (0)
    • Algorithms (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Unity List
  • random
  • OverlapCircleAll
  • C#
  • C# List
  • Unity Error
  • Collection was modified
  • Collision
  • Rigidbody2D
  • collider2d
  • spine
  • Unity

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ppoyami

ppoyami

Unity Errors

Collection was modified; enumeration operation may not execute - 리스트 순회 중 변경 에러

2022. 12. 16. 18:02

Solution

1. foreach → for 문으로 변경

하나의 아이템을 찾는 경우라면, 아래 처럼 foreach를 사용할 수 있다.(break로 나가서 다음 순회를 하지 않기 때문에.)

foreach(var data in someList){
    if(data == null){
        someList.Remove(data);
        break;
    }
}

2. reverse하게 탐색하기

줄어버린 List의 index에 접근을 못하고 넘어가버리는 경우가 발생하기때문에 List의 모든 항목을 점검하지 못하게될 수 있다. 따라서 거꾸로 탐색하여 제거한다.

void ReturnPool()
    {
        for (int i = monsters.Count - 1; i >= 0; i--)
        {
            if (!monsters[i].gameObject.activeInHierarchy) // 비활성화 된 몬스터
            {
                ReturnParent(monsters[i]);
            }
        }
    }

3. RemoveAll() 사용하기

movieCollection.RemoveAll(movie => movie.Contains(removeMovie));

 

아이템을 추가할 때는 AddRange() 사용하기

리스트를 순회하면서 아이템 추가가 되지 않기 때문에, 임시 리스트에 추가할 항목을 저장하고, AddRange로 확장하기.

var itemsToAdd = new List<string>();

foreach (var movie in movieCollection)
{
	if (movie.Contains(duplicateMovie))
	{
		itemsToAdd.Add(duplicateMovie);
	}
}

movieCollection.AddRange(itemsToAdd);
 
 

'Unity Errors' 카테고리의 다른 글

스파인 Additive Material 설정이 None으로 되어있을 때.  (0) 2022.10.14
    'Unity Errors' 카테고리의 다른 글
    • 스파인 Additive Material 설정이 None으로 되어있을 때.
    ppoyami
    ppoyami

    티스토리툴바