FindWithTag() 은 유니티에서 특정 태그를 가진 오브젝트를 찾을 때, 사용하는 함수입니다.
그런데, FindGameObjectWithTag() 라는 함수도 존재합니다.
결론부터 말씀드리자면, 두 함수는 결국 같은 기능을 합니다.
내부 구현
public static GameObject FindWithTag(string tag)
{
return FindGameObjectWithTag(tag);
}
Unity 엔진 내부에서 FindWithTag()는 결국 FindGameObjectWithTag()를 호출합니다.
그리고 이 FindGameObjectWithTag()는 unsafe 키워드가 붙은, Unity의 엔진 내부 함수입니다.
즉, FindGameObjectWithTag()는 존재하긴 하지만 문서화되지 않은 내부 함수이며, 일반적으로 사용할 일이 없습니다. 우리는 항상 Unity 공식 문서에 정의된 FindWithTag()를 사용하는 것이 안전합니다.
태그 비교는 CompareTag()
오브젝트의 태그를 비교할 때 아래처럼 쓰시는 분이 계실거라 생각됩니다
// 이런 식으로
if (obj.tag == "Enemy") { ... }
하지만 이것보다는 다음 방식이 훨씬 안전하고 빠릅니다.
// 이렇게 쓰는 게 정석입니다
if (obj.CompareTag("Enemy")) { ... }
CompareTag()
• 문자열 비교가 아닌 내부 해시값으로 빠르게 검사합니다.
• 존재하지 않는 태그명을 넣었을 경우 Assert 오류를 발생시켜 실수를 바로 알려줍니다.
• 반면 tag == "..." 는 단순히 false 만 반환하므로, 오타를 놓치기 쉽습니다.
요약
• FindGameObjectWithTag()는 Unity 내부용 함수로, 직접 사용하지 마세요.
• FindWithTag()는 공식 API이며 같은 기능을 하므로 이것만 사용하면 됩니다.
• 오브젝트의 태그 비교는 CompareTag()를 사용해야 더 빠르고 안전합니다.
'Unity' 카테고리의 다른 글
유니티에서 yield break 와 코루틴에서 제거되는 시점 (0) | 2025.07.02 |
---|---|
유니티에서 물체를 목적지까지 이동시키는 방법 (0) | 2025.07.01 |
유니티에서 카메라의 시야각을 나타내는 흰색 실선이 거슬릴 때 (0) | 2025.07.01 |
유니티에서 Visual Studio 가 열리지 않을 때 (0) | 2025.07.01 |
유니티 메뉴 폰트 크기 조정 (0) | 2025.07.01 |