본문 바로가기

Unity

[Unity] 생명 주기가 뭐야?

728x90

 

생명 주기란 유니티가 스크립트의 생명 주기 동안의 이벤트 함수들의 실행 순서를 지정해놓은 것을 말하는 것이다. 

 

생명 주기(Life Cycle)

Awake: 프리팹이 인스턴스화 된 직후에 호출됩니다. 오브젝트가 비활성화인 상태로 게임을 실행시키면 활성화시킬 때 함수가 호출되게 됩니다.

 

OnEnable: 오브젝트 활성화 직후 함수가 호출됩니다.

 

Start: 스크립트 인스턴스가 활성화 된 경우에 첫 번째 프레임 업데이트 전에 호출됩니다.

 

FixedUpdate:  종종 Update 보다 더 자주 호출됩니다. 프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있습니다. 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생합니다. FixedUpdate 의 움직임 계산을 적용할 때 Time.deltaTime 만큼 값을 곱할 필요가 없습니다. FixedUpdate 가 프레임 속도와 관계없이 신뢰할 수 있는 타이머에서 호출되기 때문입니다.

 

OnTriggerXXX: 오브젝트의 콜라이더가 트리거(무언가가 안에 들어오면 물리적으로 반응하지 않고 단순히 감지만 하는 콜라이더)로 설정된 경우에 호출됩니다.

 

OnCollisionXXX: Rigidbody 접촉이 발생하거나 유지되거나 분리될 때 호출됩니다. 

 

Update: 프레임당 한 번 호출됩니다. 프레임 업데이트를 위한 주요 작업 함수입니다.

 

LateUpdate: Update 가 끝난 후 프레임당 한 번 호출됩니다. Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료됩니다. LateUpdate 는 일반적으로 다음의 3인칭 카메라에 사용합니다. 캐릭터를 움직이고 UpdateUpdate로 방향을 바꾸게 하는 경우 LateUpdateLateUpdate에서 모든 카메라 움직임과 로테이션 계산을 수행할 수 있습니다. 이렇게 하면 카메라가 포지션을 추적하기 전에 캐릭터가 완전히 움직였는지 확인할 수 있습니다.

 

OnDisable: 동작이 비활성화되거나 비활성 상태일 때 이 함수가 호출됩니다.

 

Destroy: 오브젝트를 파괴하여 게임 내에서 없애줍니다.

 

https://docs.unity3d.com/kr/2018.4/Manual/ExecutionOrder.html#ScriptLifecycleFlowchart

 

이벤트 함수의 실행 순서 - Unity 매뉴얼

Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.

docs.unity3d.com

생명 주기를 알면 프로그래밍에 있어서 변수 초기화를 할 때 Awake를 써야 하는지 Start를 써야 하는지에 대해 정확히 알 수 있고, LateUpdate를 쓰는 이유, 물리 연상에는 왜 FixedUpdate를 써야 하는지에 대해 알 수 있습니다.

 

어떤 언어라도 잘하고 싶다면 구조에 대해 알아야하기 때문에 생명 주기에 대한 글도 써보았습니다. 더 자세한 정보를 알고 싶거나 전체 생명 주기에 대해 알고 싶다면 위의 링크를 통해서 알아보는 것을 추천드립니다.

728x90

'Unity' 카테고리의 다른 글

[Unity] 코루틴이 뭐야?  (0) 2020.06.07
[Unity] 델리게이트가 뭐야?  (0) 2020.06.02
[Unity] 싱글톤 패턴은 뭐야?  (0) 2020.05.31
[Unity] 오브젝트 풀링은 뭐야?  (0) 2020.05.23
[Unity] 퀘스트를 만들어보자(4)  (0) 2020.05.18