Unity Learn/주니어 프로그래머

4단원 - 게임 플레이 메카닉 : FindObjectsOfType<>()

coding-potato 2024. 11. 22. 21:24

FindObjectsOfType<>() 함수

Unity에서 사용되는 정적(static) 함수로, 현재 씬에 있는 모든 특정 타입의 객체를 검색하여 반환함

 

FindObjectsOfType의 기본 형태

FindObjectsOfType<Type>();
 

매개변수

  • Type: 찾고자 하는 컴포넌트의 타입입니다. 예를 들어, Transform, Rigidbody, Collider 등 Unity에서 사용되는 컴포넌트 타입을 지정할 수 있습니다. 객체에 적용된 스크립트 또한 적용할 수 있습니다.

반환 값

  • 반환 값은 타입에 맞는 컴포넌트들을 포함하는 배열입니다. 반환된 배열에는 씬 내에서 해당 타입을 가진 모든 컴포넌트가 포함됩니다.

사용 예시

이 예제에서는 씬에 있는 모든 Rigidbody 컴포넌트를 찾아서 그 이름을 출력합니다.

FindObjectsOfType의 특징

  1. 모든 객체 반환: FindObjectsOfType은 씬에 있는 모든 객체를 검색하므로, 조건에 맞는 모든 컴포넌트를 배열로 반환합니다.
  2. 컴포넌트만 검색: 반환되는 것은 컴포넌트(해당 컴포넌트를 가진 게임 오브젝트가 아닌 컴포넌트 자체)입니다. 만약 게임 오브젝트를 가져오고 싶다면, gameObject를 통해 접근할 수 있습니다.
  3. 성능 고려: FindObjectsOfType은 비효율적일 수 있으므로, 자주 호출하면 성능 저하가 발생할 수 있습니다. 예를 들어, 매 프레임마다 호출하는 것은 피해야 합니다. 씬에 많은 객체가 있을 경우에는 성능에 미치는 영향이 클 수 있습니다.
  4. true와 false 매개변수: FindObjectsOfType은 true/false 매개변수를 받는 오버로드도 있습니다. 이를 통해 비활성화된 객체를 포함시킬지 말지를 설정할 수 있습니다.
    • true: 비활성화된 게임 오브젝트에 포함된 컴포넌트도 검색합니다.
    • false (기본값): 활성화된 게임 오브젝트에 포함된 컴포넌트만 검색합니다.

 

정리

  • **FindObjectsOfType**은 씬에 존재하는 모든 지정된 타입의 컴포넌트를 배열로 반환하는 메서드입니다.
  • 자주 사용하면 성능에 영향을 미칠 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다.
  • 활성화된 객체와 비활성화된 객체를 구분할 수 있는 매개변수 옵션이 있으며, 컴포넌트가 아닌 게임 오브젝트를 찾을 때는 gameObject를 통해 접근합니다.