안 쓰던 블로그

유니티 GetComponentsInChildren이 안 될 때 해결 방법(길이가 0이라고 뜰 때) 본문

유니티/개발

유니티 GetComponentsInChildren이 안 될 때 해결 방법(길이가 0이라고 뜰 때)

proqk 2020. 4. 13. 19:39
반응형
Text[] boxText = boxtext.GetComponentsInChildren<Text>();
print(boxText.Length);

Length가 0으로 나와서 빈 배열을 참고했다는 에러가 나올 때 해결 방법

 

일단 부모-자식 관계가 제대로 되어 있는지부터 확인한다

그리고 부모 게임 오브젝트를 GameObject.Find()로 가져왔으면 이름이 틀리진 않았는지 확인하고

public으로 가져왔으면 잘 넣어줬는지 확인한다

 

그리고 중요한 점

GetComponentsInChildren은 자식 오브젝트가 켜져있어야 가져와진다!!

 

다 꺼놓고 원하는 만큼 SetActive(True)하려고 했더니만 활성화 되어있지 않다면 아예 없는 취급하더라ㅋㅋ

 

 

+댓글로 누군가 알려주신 내용 추가

GetComponentsInChildren<T>()는 숨겨진 파라미터 includeInactive가 들어있으며, 기본값이 false입니다
여기에 인자로 bool값 true를 넣어주면 activeSelf가 꺼져있는 자식 오브젝트들도 전부 가져올 수 있습니다

 

includeInactive값을 true로 하면 꺼져 있는 자식 오브젝트도 가져올 수 있다고 한다!

스크립트로 필요할 때마다 자식을 손수 키고 끄고 했는데 이런 방법이 있다니 굿ㅜ

반응형
Comments