강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kkln24865149
kkln24865149

câu hỏi đã được viết

Bắt đầu phát triển trò chơi bằng Unity: Phần 3. Phát triển trò chơi bắn súng

GetComponent

GetComponent 강의 질문

Viết

·

316

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에 접근하여 값을 변경 가능한 것으로 배웠던 것 같습니다.. 차이점이 뭐죠?

C#unity

Câu trả lời 1

0

저도 수강생이지만 우연히 보게 되어서 검색해 보았습니다.
제가 찾아본 바로는


Unity에서는 특정 컴포넌트에 접근하기 위해 GetComponent<T>() 메서드를 사용합니다. 그러나 Transform은 모든 GameObject에 항상 포함되어 있는 기본 컴포넌트이기 때문에 특별한 경우로 취급됩니다.

Unity는 GameObjectTransform 컴포넌트에 바로 접근할 수 있도록 transform이라는 특별한 프로퍼티를 제공합니다. 따라서 Transform 컴포넌트에 접근하기 위해 GetComponent<Transform>()를 사용할 필요가 없습니다. 대신 transform 프로퍼티를 바로 사용하면 됩니다.

요약하자면:

  • Transform은 모든 GameObject에 항상 포함되어 있기 때문에 transform 프로퍼티를 통해 직접 접근할 수 있습니다.

  • 다른 컴포넌트 (예: MeshRenderer, Rigidbody 등)는 GetComponent<T>()를 사용하여 접근해야 합니다.

요점은

Transform은 모든 GameObject에 있어서 GetComponent 사용안하고 transform으로바로 접근할수 있게 약속한것 같습니다.

kkln24865149님의 프로필 이미지
kkln24865149
Người đặt câu hỏi

감사합니다!

Hình ảnh hồ sơ của kkln24865149
kkln24865149

câu hỏi đã được viết

Đặt câu hỏi