생명 주기란 유니티가 스크립트의 생명 주기 동안의 이벤트 함수들의 실행 순서를 지정해놓은 것을 말하는 것이다.
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
생명 주기를 알면 프로그래밍에 있어서 변수 초기화를 할 때 Awake를 써야 하는지 Start를 써야 하는지에 대해 정확히 알 수 있고, LateUpdate를 쓰는 이유, 물리 연상에는 왜 FixedUpdate를 써야 하는지에 대해 알 수 있습니다.
어떤 언어라도 잘하고 싶다면 구조에 대해 알아야하기 때문에 생명 주기에 대한 글도 써보았습니다. 더 자세한 정보를 알고 싶거나 전체 생명 주기에 대해 알고 싶다면 위의 링크를 통해서 알아보는 것을 추천드립니다.
'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 |