개발블로그
[유니티] 유니티 생명주기 (Unity Life Cycle) 본문
유니티는 사용자가 따로 호출하지 않아도 실행되는 함수들이 있는데, 그 함수들의 호출 주기를 유니티 생명주기라고 한다.
이 함수들의 호출 주기는 사용자가 수정할 수 없기 때문에 함수의 흐름을 잘 이해하고 있는게 중요하다.
✔ 대표적으로 많이 사용하는 이벤트 함수의 순서도
Awake
Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출된다.
게임 오브젝트가 시작하는 동안 비활성 상태인 경우엔 Awake 함수는 활성화 될 때까지 호출되지 않는다.
OnEnable
(오브젝트가 활성화 된 경우에만) 오브젝트 활성화 직후 이 함수를 호출한다. 활성화 할 때마다 호출된다.
Start
스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출된다.
FixedUpdate
물리 엔진을 사용하는 경우에 일정 시간 간격으로 힘을 가할 때 사용하는 함수.
프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있다.
Update
프레임 당 한번 호출된다. 프레임 업데이트를 위한 주요 작업 함수이다.
일정한 간격으로 호출되는 FixedUpdate에 비해 Update는 주기가 일정하지 않다.
LateUpdate
Update가 끝난 후 프레임 당 한번 호출 된다.
Update에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료 된다.
OnDestroy
오브젝트가 살아있는 기간의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 이 함수가 호출 된다.
OnApplicationQuit
애플리케이션 종료 전 모든 게임 오브젝트에서 호출된다.
에디터에서 사용자가 플레이 모드를 중지할 때 호출 된다.
OnDisable
동작이 비활성화되거나 비활성 상태일 때 이 함수가 호출 된다.
✔ Awake, OnEnable, Start, OnDisable
using UnityEngine;
public class LifeCycle : MonoBehaviour
{
void Awake()
{
Debug.Log("Awake");
}
void OnEnable()
{
Debug.Log("OnEnable");
}
void Start()
{
Debug.Log("Start");
}
void OnDisable()
{
Debug.Log("OnDisable");
}
}
LifeCycle 스크립트를 작성해서 MainCamera에 넣어주었다. 그림 2
그리고 LifeCycle 컴포넌트를 체크 해제해서 비활성화 후 실행했다.
(1) 비활성화 된 상태에서는 실행했을 때 가장 먼저 Awake가 실행된다.
(2) 비활성화 된 스크립트 컴포넌트를 다시 활성화하면 OnEnable이 먼저 실행되고, Start가 실행된다.
(3) 다시 스크립트를 비활성화 하면 OnDisable이 실행된다.
(4) 스크립트를 활성화하면 OnEnable이 실행된다.
✔
Awake와 Start는 스크립트가 실행됐을 때 딱 한번만 호출하므로 컴포넌트를 껐다, 켰다 해도 다시 호출되지 않는다.
OnEnable과 OnDisable은 컴포넌트가 껐다 켜질 때 마다 호출되는 것을 확인할 수 있다.
유니티 도큐먼트 :
https://docs.unity3d.com/kr/2020.3/Manual/ExecutionOrder.html#WhenQuitting
* 공부하는 단계입니다. 잘못된 내용이 있다면 피드백 부탁드립니다😊
* e-mail : heehee970@naver.com
'Unity' 카테고리의 다른 글
포톤 유니티 네트워크(PUN-Photon Unity Network) - 네트워크 기본 개념 (0) | 2021.11.18 |
---|---|
[유니티] 유니티의 메타파일 (.meta) (2) | 2021.08.05 |