Find 함수 사용을 자제해야 하는 이유에 대해 설명해주세요.
Find 함수
- GameObject.Find("오브젝트 이름")
- GameObject.FindWithTag("태그 이름")
- GameObject.FindGameObjectsWithTag("태그 이름")
- UnityEngine.Object.FindObjectOfType() 또는 GameObject.FindObjectOfType<컴포넌트 타입>()
- UnityEngine.Object.FindObjectsOfType() 또는 GameObject.FindObjectsOfType<컴포넌트 타입>()
...
Find 함수의 사용을 자제해야 하는 이유
- 해당 함수를 활용하면 Scene에 있는 해당 조건을 만족하는 오브젝트를 쉽게 찾을 수 있어 편리할 수 있음
- 다만 Scene에 있는 모든 오브젝트를 검사하기 때문에 오브젝트가 많을 수록, 그리고 런타임일 경우에는 특히 속도가 느려지는 원인이 될 수 있음
- 따라서
Start나 Awake에서 최초 실행시 1번 실행되게 하는 것이 좋음
- 심지어 최초 실행시에도 Scene 로딩을 느려지게 하는 원인이 될 수 있으므로 객체 참조에 대해서 다른 방법을 사용하는 것이 유리