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 에서 미리 할당하는 것이 최적의 방법입니다.
'Unity' 카테고리의 다른 글
Unity 에서 Tag 사용시 알아야 할 내용 (1) | 2025.03.10 |
---|---|
유니티 Inspector 설정 값을 전역으로 사용하기 (0) | 2025.03.10 |
GameObject 와 Transform 의 Find() 에 대해 (0) | 2025.03.10 |
유니티에서 특정 오브젝트 찾기 : 성능 최적화 (0) | 2025.03.09 |
Unity Inspector 에서 자동으로 컴포넌트 할당되는 원리 (0) | 2025.03.09 |