[Unity] Find 함수

최장범·2023년 11월 28일

공부

목록 보기
24/24

Find함수

  • 'GameObject.Find()' 함수

  • 씬 내에서 특정이름을 가진 GameObject를 찾는 데 사용하는 함수

  • 씬 전체를 순회하며 GameObject를 찾기 때문에 검색 속도가 느리고, 오브젝트가 많을 시에는 게임 성능에 영향을 미친다.

    	GameObject myObject = GameObject.Find("ObjectName");

사용을 자제해야 하는 이유

1.성능 저하:

Find 함수는 계층 구조 전체를 순회하여 오브젝트를 찾습니다. 이는 게임 오브젝트 수가 많아질수록 성능에 부정적인 영향을 미칠 수 있습니다. 특히 게임 실행 중 반복적으로 호출되는 곳에서 Find 함수를 사용하면 성능 문제가 심각해질 수 있습니다.

2.비용이 높은 작업:

Find 함수는 계층 구조를 순회하며 오브젝트를 찾는 작업이므로, 메모리와 CPU 리소스를 많이 사용합니다. 매번 Find를 호출할 때마다 매우 비용이 높은 작업을 수행하게 됩니다.

3.가독성 및 유지보수:

Find 함수는 코드의 가독성을 저하시킬 수 있습니다. 특정 오브젝트를 찾기 위해 Find를 사용하는 것은 해당 오브젝트에 대한 강력한 참조가 아니라 계층 구조의 경로를 사용하게 되어 코드를 이해하기 어렵게 만들 수 있습니다.


대체할 수 있는 방법

  • 캐싱(Caching)
    • Start 함수에서 필요한 오브젝트들을 캐싱하여 변수에 할당하고, 그 변수를 사용하여 다시 접근하는 방법
  • 래퍼런스 변수
    • 게임 오브젝트나 컴포넌트에 직접적인 레퍼런스 변수를 할당하여 사용
  • 풀링(Pooling)
    • 오브젝트 풀링을 사용하여 오브젝트를 관리하고 필요할 때 재활용하는 방법

0개의 댓글