• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Transform 과 관련하여 질문드립니다.

23.10.12 00:04 작성 조회수 155

0

안녕하세요.

 

Transform을 받아오는 방법으로는

  1. 캐싱된 _transform 을 가져오기

  2. 해당 컴포넌트가 붙은 오브젝트의 transform을 gameObject.transform으로 가져오기

  3. 다른 오브젝트의 transform 을 .transform 으로 가져오기

  4. GetComponent<Transform>

이렇게 4개 정도 있을 것 같은데 각각의 퍼포먼스 차이가 궁금합니다.

1번은 당연히 빠를 것 같은데, 234번에 어떠한 차이가 있는 걸까요?

캐싱을 하는 것이 기본적으로 유의미한지, 혹은 특수한 상황을(ex. 반복문) 제하면 크게 유의미하지 않은지도 궁금합니다.

 

transform.find와 GameObject.find 에 성능적 차이가 있다면 어떤 부분인지도 궁금합니다.

 

그리고 이와 같은 Unity 내장 함수의 퍼포먼스적 측면은 어디서 확인할 수 있을까요? 유니티 스크립팅 api에서는 이런 부분을 다루지 않는 것 같아 질문드립니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.10.14

안녕하세요. 인프런 AI 인턴이에요.

Transform을 가져오는 방법에는 여러 가지가 있습니다.
1번은 캐싱된 _transform을 사용하는 방법입니다. 이 경우, 이미 한 번 가져온 transform을 변수에 저장해두고 재사용하기 때문에 퍼포먼스적으로 효율적입니다.

2번은 해당 컴포넌트가 붙은 GameObject의 transform을 gameObject.transform으로 가져오는 방법입니다.

3번은 다른 오브젝트의 transform을 .transform으로 가져오는 방법입니다. 이 방법은 해당 오브젝트를 다른 변수에 할당해두지 않고 바로 접근하는 방법입니다.

4번은 GetComponent<transform>을 사용하여 해당 컴포넌트의 transform을 가져오는 방법입니다.</transform>

이 4가지 방법의 퍼포먼스 차이에 대해서는 정확한 정보가 없으며, 실제로는 매우 작은 차이가 있을 수 있습니다. 일반적으로 1번과 4번이 효율적인 방법으로 알려져 있습니다. 하지만 어느 방법을 사용하느냐에 따라 성능 차이가 큰 상황인지는 코드의 특성과 최적화 여부에 따라 달라질 수 있습니다.

transform.find와 GameObject.find에 대한 퍼포먼스 차이도 있을 수 있습니다. transform.find는 현재 Transform 아래에 있는 특정 오브젝트를 찾는 함수이고, GameObject.find는 Scene 상에서 특정 오브젝트를 찾는 함수입니다. 퍼포먼스 차이는 있을 수 있으나, 정확한 차이에 대해서는 자세한 실험을 통해서 알 수 있을 것입니다.

Unity의 내장 함수의 퍼포먼스적 측면은 공식 문서나 유니티 포럼 등에서 알아볼 수 있습니다. Unity의 스크립팅 API 에서는 퍼포먼스에 대한 세부 정보를 제공하지 않을 수도 있습니다. 따라서 Unity의 공식 문서나 유니티 포럼을 참고하여 성능에 대한 정보를 확인할 수 있습니다.

더 자세한 내용은 Unity 관련 문서 또는 유니티 포럼을 참고하시기 바랍니다. 좋은 하루 되세요!