작성
·
241
0
칼라를 변경하기 위해,
MeshRenderer rend = GetComponent<MeshRenderer>();
rend.material.color = new Color(1,0,0,1);
위 처럼, GetComponent 함수로 값을 불러와야 MeshRenderer에 접근할 수 있는 것을 알게되었습니다.
그렇다면, Transform에 접근하기 위해서도
Transform trans = GetComponent<trans>();
이렇게 함수로 값을 불러와야 되는 것이 아닌가요?
앞이 강의에서는
transform.position = new Vector3(1, 0, 0);
로 바로 position에 접근하여 값을 변경 가능한 것으로 배웠던 것 같습니다.. 차이점이 뭐죠?
답변 1
0
저도 수강생이지만 우연히 보게 되어서 검색해 보았습니다.
제가 찾아본 바로는
Unity에서는 특정 컴포넌트에 접근하기 위해 GetComponent<T>()
메서드를 사용합니다. 그러나 Transform
은 모든 GameObject
에 항상 포함되어 있는 기본 컴포넌트이기 때문에 특별한 경우로 취급됩니다.
Unity는 GameObject
의 Transform
컴포넌트에 바로 접근할 수 있도록 transform
이라는 특별한 프로퍼티를 제공합니다. 따라서 Transform
컴포넌트에 접근하기 위해 GetComponent<Transform>()
를 사용할 필요가 없습니다. 대신 transform
프로퍼티를 바로 사용하면 됩니다.
요약하자면:
Transform
은 모든 GameObject
에 항상 포함되어 있기 때문에 transform
프로퍼티를 통해 직접 접근할 수 있습니다.
다른 컴포넌트 (예: MeshRenderer
, Rigidbody
등)는 GetComponent<T>()
를 사용하여 접근해야 합니다.
요점은
Transform은 모든 GameObject에 있어서 GetComponent 사용안하고 transform으로바로 접근할수 있게 약속한것 같습니다.
감사합니다!