정명직의 게임개발

[Unity] 초기화 이벤트 함수? (Awake, OnEnable, Start) 본문

Unity/이벤트 함수

[Unity] 초기화 이벤트 함수? (Awake, OnEnable, Start)

정명직 2023. 7. 12. 00:47

이번에는 유니티 생명 주기 중에 초기화 함수인 Awake, Start, OnEnable에 대해 알아보겠습니다. 이 함수들은 서로 다른 순서와 조건에서 실행되며 적절히 활용할 경우 게임 로직을 구성하는 데 큰 도움이 됩니다.

 

유니티 생명주기

 

Awake

Awake 함수는 모든 이벤트 함수 중에 가장 처음으로 실행되는 함수입니다. 스크립트 인스턴스가 로드될 때 호출되며, 게임 오브젝트가 활성화되어 있지 않더라도 호출됩니다. 이후 씬이 종료될 때까지 다시 호출되지 않습니다.

가장 처음으로 실행되기 때문에 스크립트 내부의 변수나 참조를 초기화하는 데 주로 사용됩니다.

private Rigidbody rigid;

void Awake() 
{
    rigid = GetComponent<Rigidbody>();
}

 

OnEnable

OnEnable 함수는 스크립트 컴포넌트가 활성화 될 때마다 호출됩니다. 따라서 씬이 로드될 때 활성화 되어있다면 Awake 직후에 바로 호출되고, 비활성화 상태라면 OnEnable은 호출되지 않습니다.

 

컴포넌트가 활성화될 때만 디버그가 출력되는 모습을 볼 수 있습니다.

 

Start

Start 함수는 Awake 다음에 호출되며, Update 함수가 호출되기 전에 실행됩니다. 오브젝트가 활성화되어 있지 않다면 Start는 호출되지 않습니다. 그리고 나중에 오브젝트가 활성화되면 호출됩니다.

활성화 상태에서만 실행되기 때문에 OnEnable과 비슷하지만, Start는 처음 활성화될 때 한 번만 실행됩니다.

 

Start컴포넌트가 활성화 될 때 실행되고 Update 함수 보다 더 빨리 실행되는 모습을 볼 수 있습니다.

 

정리

정리하자면 함수 호출 순서는 Awake - Enable - Start 순서로 실행됩니다.

 

이 세 함수는 게임 로직을 초기화하고 관리하는 데 매우 중요하므로, 각 함수의 특성을 이해하고 올바르게 사용하는 것이 중요합니다.