Unity에서 컴포넌트 가져오기: GetComponent<T>()와 인스펙터 할당의 차이

2024. 8. 20. 17:34카테고리 없음

개요

Unity에서 게임 오브젝트의 컴포넌트 정보를 가져오는 방법에는 여러 가지가 있지만, 그 중에서도 두 가지 일반적인 방법, GetComponent<T>()와 인스펙터를 통한 변수 할당에 대해 설명하겠습니다

내용

본격적인 내용에 들어가기에 앞서 인스펙터가 무엇인가?

인스펙터는 Unity 에디터에서 선택한 게임 오브젝트의 세부 정보를 볼 수 있고, 그 오브젝트의 속성이나 설정을 변경할 수 있는 창입니다.

 

1. GetComponent<T>()를 사용한 컴포넌트 가져오기

GetComponent<T>()는 코드에서 직접 컴포넌트를 가져오는 방법입니다. 예를 들어, 스크립트에서 SpriteRenderer를 가져와 사용하려면 다음과 같이 작성할 수 있습니다.

ex)

SpriteRenderer renderer;

renderer = GetComponent<SpriteRenderer>();

특징

1. 자동화된 접근이 필요할 때: 스크립트가 실행될 때 컴포넌트를 자동으로 찾아 사용해야 하는 경우, 특히 컴포넌트가 인스펙터에서 할당되지 않았을 때도 문제없이 작동해야 한다면 GetComponent<T>()가 더 적합합니다.

 

2. 재사용성과 유지보수가 중요할 때: 스크립트를 여러 게임 오브젝트에서 재사용하거나, 코드 기반으로 컴포넌트를 설정할 필요가 있을 때 유리합니다. 인스펙터에 의존하지 않으므로, 코드만으로 모든 설정을 관리할 수 있습니다.

 

3. 해당 오브젝트안에 GetComponent할 오브젝트나 스크립이 붙어있어야 한다.

만약 자식에 있는 오브젝트나 스크립을 사용하고 싶을시 GetComponentInChildren를 사용하면 되고,

부모에 있는 오브젝트나 스크립을 사용하고 싶을시 GetComponentInParent를 사용해서 가져오면 된다.

자식에 SpriteRenderer가 여러개 있을경우 가장 가까이에 있는 SpriteRenderer를 가져온다.

 

2. 인스펙터를 통한 변수 할당

public 변수를 선언하여 인스펙터(Inspector)에서 직접 컴포넌트를 할당하는 방법입니다.

ex)

public Animator anim;

특징

1. 직관적이고 빠른 설정이 필요할 때: 인스펙터를 통해 변수를 쉽게 할당할 수 있기 때문에, 여러 컴포넌트를 시각적으로 설정하고 싶을 때 유리합니다. 특히, 같은 스크립트가 다른 오브젝트에서 다양한 컴포넌트와 함께 사용될 때 유용합니다.

 

2. 에디터 중심의 작업이 많을 때: Unity 에디터에서 작업하는 과정에서 인스펙터를 통해 컴포넌트를 설정하는 것이 더 직관적이고 편리할 수 있습니다. 다양한 오브젝트에 각각 다른 컴포넌트를 할당해야 할 때 적합합니다.

 

결과

자동화된 접근과 코드 재사용성을 원한다면 GetComponent<T>()를 사용하고, 직관적이고 시각적인 작업이 필요하다면 인스펙터를 통한 할당이 더 적합합니다