본문 바로가기
Unity

[Unity] 유니티 생명 주기 함수

by 적용1 2024. 11. 2.
728x90

출처 : https://docs.unity3d.com/kr/2019.4/Manual/ExecutionOrder.html

 

Awake vs Start

- Awake

  • 스크립트와 연결된 GameObject가 인스턴스화 되거나 스크립트가 처음 로드될 때 불림
    (인스턴스화 : 유니티에서 오브젝트가 실제로 생성되는 것)
  • 해당 오브젝트가 OnEnable 상태가 아니더라도 위 조건에 따라 로드되면 호출됨
  • Awake에서 다른 오브젝트에 대한 참조를 하게 되면 오브젝트가 생성될 때 반드시 실행되기 때문에 참조를 반드시 생성할 수 있다. 하지만 조심해야될 점은 각 오브젝트의 Awake함수의 호출은 무작위로 되기 때문에 초기화 되지 않은 다른 스크립트의 참조를 통해 접근을 하면 NullReferencException이 발생하게 되기 때문이다.

- Start

  • Start 함수는 컴포넌트가 활성화되는 순간 불리게 된다.
  • 호출 시기는 Awake 함수보다는 느리지만, 첫 Update보다 빠르다.
  • Start에서는 참조를 통해 접근하는 작업이 가능해진다.

OnEnable vs Start

두 가지 함수 모두 컴포넌트가 활성화될 때 불리는 공통점이 있다.

 

하지만 Start는 활성화될 때 최초 한 번만 불리지만, OnEnable은 활성화될 때 마다 불리게 된다는 차이점이 있다.

따라서 초기화 작업에는 OnEnable 함수를 사용하면 안된다.

 

오브젝트 풀링과 같은 작업에서 사용할 수 있는 함수이다.

Update vs FixedUpdate vs LateUpdate

  • Update : 한 프레임 당 한 번 호출. 이 때, 프레임 간 시간 간격이 일정하지 않기 때문에 실행 주기가 일정하지 않다.
  • FixedUpdate : 고정 단위로 불리게 되는 함수. 동일한 간격으로 호출할 수 있기 때문에 물리 계산 등에 사용되는 함수이다.
  • LateUpdate : Update 호출 뒤에 불리는 함수. 프레임 당 한 번 호출되는 것은 Update와 동일하다.
728x90

'Unity' 카테고리의 다른 글

[Unity] MonoBehaviour란  (1) 2024.11.19
[Unity] 코루틴(Coroutine)과 Invoke  (0) 2024.11.19