인프런 커뮤니티 질문&답변

pokor2님의 프로필 이미지
pokor2

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

UI 자동화 #1

Util에 짠 코드가 잘이해 안됩니다.

작성

·

270

4

Transform transform = go.transform.GetChild(0);

여기에서 게임오브젝트의 직속자식을 가지고 오는데 transform을 사용 한다는게 잘이해가 가질 않습니다...

tansform은 위치와 관련된 컴포넌트 아닌가요?

답변 2

10

Rookiss님의 프로필 이미지
Rookiss
지식공유자

https://docs.unity3d.com/kr/530/ScriptReference/Transform.GetChild.html

GameObject가 아니라 Transform으로 갖고 오는게 이해가 안 가시는 것 같은데,
특별한 이유가 있는게 아니라 API가 그렇게 만들어져 있습니다. (?)

유심히 살펴보면 유니티에서 World에 배치하는 오브젝트는
설령 배치와 무관하더라도 무조건 Transform Component를 갖고 있습니다. (심지어 빈 GameObject마저도)
따라서 어떤 오브젝트를 건내줄 때 Transform이나 GameObject 어느 쪽을 건내 주더라도
Transform <-> GameObject 사이의 변환이 자유롭습니다.
transform을 알면 transform.gameObject을 이용해 해당 GameObject에 접근할 수도 있고,
반대로 GameObject 내부에선 transform을 이용해 Transform Component 접근도 가능합니다.
그러니 한마디로 둘중 어떤 것을 사용해도 무방합니다.

그리고 원래 Transform 자체는 위치와 관련된 것이 맞긴 한데,
transform.(쩜) 을 찍어보면 추가적으로 부모/자식 간 계층적 관계와 관련된 온갖 기능들이
Transform에 구현되어 있기도 한 것을 알 수 있습니다.
그러니 결과적으로 GetChild에서 transform을 뱉어주는 것은
정말 위치를 반환한다기 보다는 transform 콤포넌트를 이용해서
알아서 필요한 정보 접근해라~ 정도로 받아들이는게 좋습니다.


0

pokor2님의 프로필 이미지
pokor2
질문자

설명 감사합니다~!

pokor2님의 프로필 이미지
pokor2

작성한 질문수

질문하기