유니티에서 게임 오브젝트 찾는 법은 한두가지가 아니다.

이번에는 게임 오브젝트 내 게임 오브젝트 즉, 하위 게임오브젝트를 찾는 방법을 정리해보려 한다.


대표적으로 세 가지가 존재한다.


transform.FindChild(string str)

transform.GetChild(int index)

transform.childCount


자식이 무엇인가. 

하이어라키(Hierarchy)에서 계층 구조를 이루고 있는 형태를 말한다.



상위에 GameObject가 부모이며 들여쓰기 된 하위 1~6까지의 6개의 GameObject가 자식이다.

이제, 자식을 찾는 방법을 알아보자.


1. 이름으로 자식 GameObject를 찾는 방법(자기 자신)


transform.FindChild("이름");


2. 번호 순으로 자식 GameObject를 찾는 방법(자기 자신)


transform.GetChild(번호);


여기서 자기 자신이란, 해당 스크립트가 컴포넌트가 된 상태를 말한다.

만약, 외부의 게임오브젝트를 찾는 것은 앞에 어떤 GameObject인지를 명시해줘야 한다.


3. 이름으로 다른 게임오브젝트의 자식 GameObject를 찾는 방법(외부 게임오브젝트)


otherGameobject.transform.FindChild("이름");


4. 번호 순으로 다른 게임오브젝트의 자식 GameObject를 찾는 방법(외부 게임오브젝트)


otherGameobject.transform.GetChild(번호);

 

물론 otherGameobject는 스크립트에서 어떤 게임오브젝트인지 선언해줘야 한다.


그 외에도 childCount 가 존재하는데, 이것은 자식 오브젝트의 개수를 알 수 있다.


Transform에 연결되어 있는 자식 트랜스폼들의 갯수입니다.


즉, transform.childCount 으로 자식의 개수를 불러 올 수 있다. ( 위 같은 경우 6 출력)



원래 기본적으로 자식의 Transform을 얻고 싶을 때 사용하는 것이다.


하지만 이를 통하여 GameObject나 Component 모두 얻을 수 있다.


 


Posted by sungho88
,