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

강낭콩님의 프로필 이미지

작성한 질문수

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

Pool Manager #3

Transform과 GameObject의차이

작성

·

1.3K

0

안녕하세요 강의 잘보고 있습니다.

1. 강사님 코드를 보면 항상 Transform을 더 자주 사용하시는 것 같아요, 중요 기능도 GameObject보다 Transform과 같은 컴포넌트를 가져오고 거기서 게임오브젝트를 끌어오시는?

그런 코드를 자주 접했는데 속도면에서 장점등이 있어서 그런건가요?

 

2. 저는 컴포넌트를 게임오브젝트 산하의 부산물이라는 애매한 개념을 갖고있었는데 컴포넌트 == 게임오브젝트 이렇게 이해해도 될까요?

 

 

 

답변 2

2

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

1. 강사님 코드를 보면 항상 Transform을 더 자주 사용하시는 것 같아요, 중요 기능도 GameObject보다 Transform과 같은 컴포넌트를 가져오고 거기서 게임오브젝트를 끌어오시는? 그런 코드를 자주 접했는데 속도면에서 장점등이 있어서 그런건가요?

속도의 장점이 있어서 그런 것은 아니고
실제로 유니티에서 부모/자식 관계라거나 그런 포함 관계는
Transform에다 기능을 넣어놨습니다. (제가 그런게 아니고, 유니티가 그렇게 만들어놨습니다 ㅎ)

2. 저는 컴포넌트를 게임오브젝트 산하의 부산물이라는 애매한 개념을 갖고있었는데 컴포넌트 == 게임오브젝트 이렇게 이해해도 될까요?

콤포넌트 == 게임오브젝트는 절대 아니고 
처음 이해하신 [게임오브젝트 산하의 부산물]이 맞습니다.
다만 Transform은 예외적으로 빈 GameObject를 만들어도 자동으로 탑재되는,
가장 기본중의 기본이 되는 Component입니다.
Scale, Rotation, Translation 같은 기본적인 위치 정보는 물론
GameObject 사이의 상하 구조 (parent, child, ...)도 Transform에서 관리하고 있습니다.

따라서 정말 특수하게 GameObject <-> Transform은 '거의' 동일하다고 볼 수 있습니다.
실제로 GameObject에 붙어있는 그 어떤 Component라도
편리하게 해당 GameObject의 Transform에 접근할 수 있게 .transform 을 만들어놨습니다.
따라서 
GameObject로 들고 있으나 Transform으로 들고 있으나 별반 차이가 없는 셈이죠.
GameObject go가 있다면 go.transform으로 해당 Component를 이용 가능하고,
거꾸로 transform.gameObject를 이용해 다시 GameObject로 돌아갈 수도 있습니다.

1

강낭콩님의 프로필 이미지
강낭콩
질문자

아하 감사합니다.  혼자 짜려고 보면 어떨때 gameObject를 쓰고 transform을 쓸지 어떤게 좋을지 많이 헷갈렸거든요. 부모 자식관계 보고 사용하는거군요

감사합니다~ ^0^