작성 맥락
이 글은 직접 학습하거나 구현하며 남긴 개인 기술 기록입니다. 참고 자료가 있는 경우 본문에 출처를 남기고, 틀린 부분을 발견하면 수정합니다.
Unity의 계층 구조 탐색과 Transform 사용 이유
결론
Unity에서 자식 오브젝트를 탐색할 때는 GameObject가 아닌 Transform을 사용해야 한다.
그 이유는 Unity의 계층 구조가 Transform을 기준으로 구성되고, Transform은 Unity C++ 엔진의 핵심 계층 정보와 연결되기 때문이다.
🔍 근거 1: Unity 계층 구조는 Transform이 담당한다
Unity의 오브젝트들은 부모-자식 구조로 연결된 트리(Tree)를 이룬다.
이 구조는 GameObject가 아닌 Transform 컴포넌트에 의해 형성된다.
- 모든
GameObject는 반드시 하나의Transform을 포함한다. - 자식 오브젝트들은
Transform의 자식 목록에 들어간다. - 위치, 회전, 스케일 외에도 계층 구조까지 관리한다.
따라서 계층 탐색은 Transform을 통해서만 가능하다.
🔍 근거 2: Transform은 계층 탐색 기능을 제공한다
Transform은 자식 오브젝트를 탐색하기 위한 다양한 기능을 제공한다.
transform.GetChild(i)로 i번째 자식 접근transform.childCount로 자식 수 확인GetComponentsInChildren<T>()로 재귀 탐색 가능
이 기능들은 GameObject 자체가 아닌
Transform에만 존재한다.
🔍 근거 3: Transform은 단순 위치 정보가 아닌 계층 구조의 핵심이다
많은 개발자들은 Transform이 단순히
위치, 회전, 크기 정보를 담는다고 생각한다.
하지만 실제로는 Unity 엔진에서 계층 관계를 정의하는 핵심 컴포넌트이다.
- 부모 오브젝트의 위치가 바뀌면
자식 오브젝트도 함께 영향을 받는다. - 이는 오브젝트들이
Transform트리 구조로
강하게 연결되어 있기 때문이다.
Transform으로 자식 탐색하기
자식 오브젝트를 찾을 때는 Transform을 사용한다:
// i번째 자식 가져오기
Transform child = transform.GetChild(i);
// 자식 수 확인
int count = transform.childCount;
// 모든 자식 컴포넌트 찾기
Component[] components = transform.GetComponentsInChildren<Component>();
GameObject에는 이런 기능이 없고, Transform에만 있다.
댓글이 보이지 않으면 GitHub에 로그인한 뒤 새로고침해 주세요. 공개 댓글은 로그인 상태에서 더 안정적으로 표시됩니다.