본문 바로가기
Unity

FindWithTag() 와 FindGameObjectsWithTag()

by Oz Driver 2025. 3. 9.

FindWithTag()와 FindGameObjectsWithTag()는 모두 Unity에서 특정 태그(tag) 를 가진 오브젝트를 찾는 함수들이지만, 둘 사이에는 중요한 차이점이 있습니다.

 

 

1. FindWithTag()

역할

특정 태그를 가진 첫 번째 게임 오브젝트를 찾습니다.

 

반환 값

단일 게임 오브젝트 (GameObject)

 

사용 예시

이 함수는 씬에서 "Player" 태그를 가진 첫 번째 오브젝트를 찾고, 그 오브젝트를 반환합니다. 만약 태그를 가진 오브젝트가 없으면 null을 반환합니다. 이 함수는 단 하나의 오브젝트만 찾을 때 유용합니다.

GameObject player = GameObject.FindWithTag("Player");

 
 

2. FindGameObjectsWithTag()

역할

특정 태그를 가진 모든 게임 오브젝트를 찾습니다.

 

반환 값

게임 오브젝트 배열 (GameObject[])

 

사용 예시

이 함수는 씬에서 "Enemy" 태그를 가진 모든 오브젝트를 찾아서 배열로 반환합니다. 태그를 가진 오브젝트가 없으면 빈 배열을 반환합니다. 이 함수는 같은 태그를 가진 여러 오브젝트를 한꺼번에 처리할 때 유용합니다.

GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");

 
 

주요 차이점

찾는 범위

FindWithTag()는 첫 번째로 발견된 하나의 오브젝트만 반환합니다.

FindGameObjectsWithTag()는 모든 오브젝트를 배열로 반환합니다.

 

반환 타입

FindWithTag()는 단일 오브젝트 (GameObject)를 반환합니다.

FindGameObjectsWithTag()는 오브젝트 배열 (GameObject[])을 반환합니다.

 

 

언제 사용해야 할까?

FindWithTag()

하나의 오브젝트만 필요할 때 (예: 플레이어 캐릭터처럼 유일한 존재).

 

FindGameObjectsWithTag()

같은 태그를 가진 여러 오브젝트를 처리할 때 (예: 적 캐릭터나 특정 아이템들).

이렇게 두 함수는 용도에 따라 선택해서 사용하면 됩니다.

 

 

정리 

FindWithTag() 와 FindGameObjectsWithTag() 는 최적화의 핵심 요소이지만, 자주 호출하면 성능 저하가 일어납니다.  왜냐하면 Scene 에 있는 모든 활성화된 게임 오브젝트를 대상으로 탐색하기 때문입니다.

따라서 가능한 한 Start() 에서 한 번만 호출하거나 Inspector 에서 미리 할당하는 것이 최적의 방법입니다.