[Unity]GetComponentsInChildren사용시 transform child out of bounds 오류

jh Seo·2022년 8월 24일
0

유니티

목록 보기
8/50

개요

유니티에서 GetComponentsInChildren함수를 사용하는 도중

elem.GetChild(0)

부분에서
transform child out of bounds 오류가 계속 떠서 찾아봤다.

찾아보니 transform에 자식이 없거나 자식 수보다 더 큰 값을 call할시 뜨는 오류였다.

해결 방법

이상해서 각 자식 호출마다 자식의 이름을 debug.log()함수로 찾아봤다.
GetComponentsInChildren함수는 DFS방식의 서치로
모든 레벨의 자식들을 다 불러오는 방식임을 간과했고 모든 자식을 다 불러오는 방식이라
제일 깊은 레벨의 자식은 자식이 없으므로 저 오류가 뜨는 것이였다.

따라서 모든 호출에서 부모 오브젝트가 같은 오브젝트인지 비교를 통해 첫 번째만 호출하였다.

  foreach(Transform elem in buttonTransforms)
        {
        //부모 오브젝트일 경우 제외 & elem이 첫번째 오브젝트가 아니면 제외
		if (elem.name == buttonsGroup.name || elem.parent.name!=buttonsGroup.name) continue;
        }
profile
코딩 창고!

0개의 댓글