Engine/Unity

Start(), Awake(), OnEnable()의 차이와 호출순서

VirtualDever 2022. 2. 18. 21:24

https://youtu.be/TnhDY8Ntnpo

유니티의 근간이 되는 MonoBehaviour 클래스를 상속 받는 클래스는 초기화해 주는 작업이 필요합니다.
이 초기화 작업을 어느 메서드에서 하는 것이 좋을까요?
Awake(), OnEnable(), Start() 등이 있으며 이 순서대로 메서드가 호출됩니다.

먼저, Awake() 메서드는 씬이 불러들여졌을 때 가장 먼저 호출됩니다.
스크립트 인스턴스가 종료되기까지 단 한번만 호출됩니다.
스크립트간 참조를 설정하기 위해 Awake()를 사용합니다.

OnEnable() 메서드는 게임오브젝트가 활성화 될 때마다 호출될 수 있습니다.
gameObject.SetActive( true ); 로 호출될 수 있습니다.

Start() 메서드는 Update() 메서드가 실행되기 바로 직전에 호출됩니다.
이 세가지 메서드 중 어느 것을 쓸지 헷갈린다면 우선 Start() 메서드를 사용하는 것도 무방합니다.

마지막으로 정리를 하자면 초기화할 때 호출되는 함수는 순서대로 Awake(), OnEnable(), Start()가 있습니다.