[유니티(Unity)] 하위 오브젝트 접근하는 방법, 하위 오브젝트 개수 구하기(GetChild, FindChild, childCount)
유니티를 다루면서 스크립트로 어떤 오브젝트의 하위 오브젝트를 접근해야 하는 경우가 있잖아요??
그럴때 가능한 방법이 여러가지가 있습니다!!
이번에 모두 알아보죠
예제 준비하기
빈 GameObject 만드는 단축키
ctrl + shitf + n
그리고 scripts 폴더를 assets 폴더 밑에 만들고 scripts 폴더 안에 exam이라는 C# script를 생성하고 열어줍시다
A object를 선택하고 inspector 창에서 'Add Component'를 클릭하여 exam을 검색하여 추가해줍시다
그러면 위와 같이 선택된것을 볼 수가 있습니다.
그리고 마지막으로, 위 처럼 A object 밑에 빈 object인 B object를 만들어서 넣어줍시다.
1. transform.GetChild
public class exam : MonoBehaviour{
GameObject child = null;
void Start() {
gameobject = transform.GetChild(0).gameObject; // 첫 번째 자식 object 찾기
Debug.Log(child); // console에 출력
}
}
첫 번째 방법은 transform.GetChild를 이용하는 방법입니다.
위에서 연 exam 파일을 위와 같이 작성해줍니다
저장을 하고 unity로 돌아가서 실행을 해주면 아래와 같이 콘솔 창에 뜨는 것을 볼 수 있습니다
child 객체의 이름이 나오네요
1.2 1번 응용
이 함수를 이용해서 A object 밑에 여러개의 object들이 있다면 모두 찾을 수 있어요
아래에 4개의 child가 있다면 for문을 이용해서 모두 찾을 수 있겠죠??
for(int i=0; i<4; i++){
transform.GetChild(i).gameObject.SetActive(false);
}
위 처럼 순회 하면서 A의 하위의 4개의 object를 모두 비 활성화 상태로 만들 수 있어요
2. transform.FindChild(string str)
public class exam : MonoBehaviour{
GameObject child = null;
void Start() {
gameobject = transform.FindChild("B"); // 이름으로 object 찾기
Debug.Log(child); // console에 출력
}
}
두번째 방법은 FindChild 메소드를 이용하여 찾는 방법 입니다.
이는 이름으로 자식 오브젝트를 찾는 방법이에요
코드를 이번에는 위와 같이 작성하고 다시 실행해 보면 결과가 같은 것을 보실 수 있을거에요
3. 하위 오브젝트 개수 구하기
위의 응용에서 A object의 밑에 있는 child를 모두 비활성화 상태로 바꾸는 예제를 해봤잖아요??
그런데 child가 몇개가 있는지 모를 정도로 많다면 어떻게 해야할까요???
그럴때 사용할 수 있는 것이 바로 하위 오브젝트의 개수를 구하는 것입니다.
바로 아래와 같이 childCount속성을 이용해서 쉽게 구할 수 있어요
parent.transform.childCount
한 번 제대로 출력 되는지 해봅시다!!
void Start(){
Debug.Log("child 갯수 : " + this.transform.childCount);
}
위와 같이 start()문을 작성하고 유니티로 돌아가서 실행하면 아래와 같은 걸 볼 수 있을거에요
여러가지 상황을 직접 만들어서 익숙해지고 응용력을 꼭 키워보시기 바랍니다~~