본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[Unity] Unity 생명주기

by 빛하_ 2024. 2. 15.

 

Q. Unity의 생명주기(Unity Life Cycle)란?

 

생명주기란 Unity 스크립트 내에서 여러 개의 함수가 실행되는 순서와 흐름을 의미한다.

크게 초기화-물리/로직-해제 3개의 영역으로 구분되어 있다.

 

1. Initialization (초기화)

1) Awake

게임 오브젝트 생성 시 최초로 실행되는 함수로 스크립트가 실행될 때 1번만 호출된다.

오브젝트가 비활성화일 경우엔 호출되지 않지만 스크립트가 비활성화일 경우엔 호출된다.

생성자처럼 게임의 상태 또는 변수 초기화로 사용한다. 오브젝트의 초기화 또는 프리팹의 인스턴스화가 모두 진행된 직후에 호출되기 때문에 Find 함수 호출의 안정성을 보장한다.

코루틴으로 실행할 수 없다.

 

2) OnEnable

게임 오브젝트를 활성화 시킨다. ex)로그인

오브젝트 또는 스크립트가 활성화될 때마다 호출된다. 이벤트 연결 시 사용하며 코루틴으로 실행할 수 없다.

 

3) Start

업데이트 시작 전 한 번만 실행된다. 오브젝트 또는 스크립트가 비활성화일 경우 호출되지 않는다.

코루틴으로 실행할 수 있다.

 

2. Physics / Logic

1) FixedUpdate

고정된 프레임 주기로 호출되는 함수이다. 스크립트가 활성화되어 있어야 호출된다.

물리 연산 업데이트, 고정된 실행 주기를 가지므로 CPU를 많이 사용한다. 

게임 도중 계속 업데이트 된다. (1초에 50회 정도)

 

2) OnTrigger

두 오브젝트의 충돌을 확인하는 함수이다. 물리 연산을 하지 않고 통과한다.

 

3) OnCollision

두 오브젝트의 충돌을 확인하는 함수이다. 물리 영향을 받으며 Rigidbody가 존재해야 한다.

 

4) Update

게임 로직 업데이트, 컴퓨터 환경에 따라 실행주기가 달라진다.

매 프레임마다 호출되는 함수로 디바이스 성능이나 최적화 상황에 따라 frame rate가 변하므로 함수 호출 시간이 매번 달라진다. 스크립트가 활성화되어 있어야 호출된다.

 

5) LateUpdate

모든 업데이트가 끝난 후에 실행된다. 

ex. 카메라, 로직의 후처리, 경험치 획득 등

 

3. Decommissioning

1) OnApplicationQuit

응용 프로그램 종료 전 모든 오브젝트에서 호출된다.

 

2) OnDisable

오브젝트 또는 스크립트가 비활성화될 때마다 호출된다.

이벤트 연결 종료 시 사용한다.

코루틴으로 실행할 수 없다.

 

3) OnDestroy

게임 오브젝트 삭제 시점의 명령을 담당한다. 오브젝트 생존 기간의 마지막 프레임이 업데이트된 후 실행된다.

 

 

'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글

[Unity] 렌더링 파이프라인  (0) 2024.02.20
[Unity] MonoBehaviour 메서드  (0) 2024.02.16
[Unity] MVC 모델  (0) 2024.02.14
[C#] 싱글톤의 장단점  (1) 2024.02.13
[C#] SOLID 원칙과 상속의 특징  (1) 2024.02.08

댓글