공부

[Unity] Awake() 와 Start()

Myong_ 2022. 7. 26. 15:03

 

개념
- Awake()와 Start() 모두 유니티에서 지정한 함수로, 실행 시 단 한 번만 호출된다.
- 주로 변수와 스크립트간의 종속 관계 등 초기화에 사용된다.

 

실행 순서
Reset - Awake - Start - Update - (OnTrigger ~) - (OnCollision ~) - (...)

 

 

 

Awake()

Awake()는 스크립트의 인스턴스(오브젝트)가 로드(loaded)되는 순간 호출된다.

Awake()는 스크립트 비활성화 여부와 관계없이 항상 호출된다.

단, 스크립트가 붙어있는 오브젝트 자체가 비활성화 되어있다면 호출되지 않는다.

 

단, 실행 도중 생성된 인스턴스(오브젝트)의 경우, 인스턴스 내부의 Awake()는

기존에 생성되어있던 모든 객체의 Start()가 전부 호출된 후에 호출된다.

Awake() 함수는 각 객체마다 임의의 순서로 호출된다.

 

A / B / C / D 오브젝트가 Awake()와 Start()를 달고 있는 경우
1.  A / B / C / D 랜덤 순서대로 Awake() 호출
2. 인스턴스 B' 생성
3. A / B / C / D 의 Start() 호출
4. B' 의 Awake () - Start() 호출

 

 

 

Start()

Start()는 스크립트가 활성화되는 순간, 모든 Update 실행 직전 첫 번째 프레임에서 호출된다.

Start()는 스크립트가 비활성화 되어있다면 호출되지 않는다.

 

 

 

활용법

스크립트간 초기화 순서를 부여하기 위해서 Awake()와 Start()를 사용할 수 있다.

(ex. 함수 A를 먼저 초기화하고, 이후 B를 순차적으로 초기화 하고 싶은 경우

Awake()에서 A를 초기화하고, Start()에서 B를 초기화한다.)

 

 

 

참고

https://sungkukpark.github.io/unity-initialization-event-function-types/

 

[Unity] 초기화 이벤트 함수 3형제: Awake, Start, OnEnable

원문: MonoBehaviour.Awake(), MonoBehaviour.Start(), MonoBehaviour.OnEnable(), MonoBehaviour.OnDisable() 최종 업데이트: 2018년 11월 21일 본문은 Update…

sungkukpark.github.io