유니티 이벤트 함수

2023. 10. 7. 16:46Unity

Awake, Start, OnEnable, OnDisable, OnDestroy, Update, LateUpdate, FixedUpdate

 

유니티 이벤트는 특수처리 -> 컴포넌트가 있으면 호출되고 없으면 호출안하는 구조를

유니티 기본 동작 원리는 메시지 브로드 캐스팅이라고 함.

그냥 상속구조를 사용하면 컴포넌트가 있는지 없는지 모른다.

 

1-1. Awake vs Start

 

■ 공통점 : 게임오브젝트가 처음으로 초기화할 때 작업함

■ 차이점

- Awake : 스크립트가 씬에 포함되어있을 때 1회 호출되는 함수

(비활성화 되어 있어도 작동, 게임 상황에 무관한 초기화 작업, 자신만 준비할 녀석)

- Start : 씬에 처음으로 Update 하기 직전에 1회 호출되는 함수

(활성화 되어 있어야만 작동, 게임 상황이 영향을 줄 수 있는 작업)

결국 같은 초기화 작업이지만 Awake, Start는 해주는 작업 자체가 다르다

 

1-2. Update vs LateUpdate vs FixedUpdate

 

-  Update : 게임의 프레임마다 호출, 핵심 게임 로직을 구현.

-  LateUpdate : 씬 내에 있는 모든 오브젝트가 Update 된 후 호출.

게임 프레임의 진행 결과가 필요한 동작이 있는 기능 구현, 카메라 (후처리)

-  FixedUpdate : 프레임 단위가 아닌, 유니티의 물리설정 단위 시간마다 호출. (기본 1초에 50) Update와 다르게 프레임 당 연산과 단위시간이 일정. 성능과 프레임 드랍에 영향을 받지 않아야 하는 작업. 물리처리 : 렉이 걸리더라도 항상 같은 처리를 해줘야 하는 곳

 

FixedUpdate는 시간을 체크하며 단위 시간보다 넘을 경우 먼저 처리하는 작업이다.

FixedUpdate는 제일 먼저 처리하며 중요한 작업을 하는 곳이기 때문에 이곳에서 처리가 오래걸리는 작업을 하는 경우에 단위 시간이 계속 넘어가기 때문에 FixedUpdate만 호출되며 Update를 호출될 수 가 없을 수도 있다.

 

1-3. 컴포넌트가 시작부터 끝날 때까지 호출되는 순서

 

Awake -> OnEnable -> Start -> FixedUpdate -> Update -> LateUpdate -> OnDisable -> OnDestroy

 

- OnEnable : 스크립트(컴포넌트) 혹은 스크립트가 붙어있는 오브젝트가 '활성화'될 때마다 실행된다. (꺼졌다가 켜졌을 때 or 오브젝트가 최초 생성될 ) Start보다 먼저 실행

- OnDisable : 스크립트(컴포넌트) 혹은 스크립트가 붙어있는 오브젝트가 '비활성'될 때마다 실행된다.

- OnDestroy : 오브젝트 Destroy 될  자동 호출되는 이벤트함수다. (마치 소멸자)