Unity) 라이프사이클, 이벤트함수

1. 라이프 사이클이란?
유니티 엔진 시스템상 어느 타이밍에 무엇을 호출하는지에 대한 내용입니다.
- Awake, OnEnable, Start 는 매프레임 호출되는 것이 아닌 객체 생성때만 호출됩니다.
- Physics 도 매프레임이 아닌 주기적으로 호출됩니다.
Time.deltaTime
현재 프레임에서 다음 프레임 업데이트 까지의 시간을 이야기한다.
2. 이벤트 함수
2-1) Awake, OnEnable, Start
==Awake== : 자기 자신 생성 때 호출됩니다.
==OnEnable== : 오브젝트가 켜질때마다 호출됩니다.
==Start== : 첫 프레임 직전에 호출됩니다.
- ==Awake== 는 자기 자신 컴포넌트를 참조해놓을때 주로 사용합니다.
- ==OnEnable== 은 여러번 불린다는 성질 때문에 한번만 해야하는 일을 여기에 두지 않습니다.
- ==Start== 에는 다른 오브젝트가 준비를 마쳤다는 것을 전제로 하는 코드를 둡니다.
| 시점 | 횟수 | 무엇을 두나 |
|---|---|---|
Awake | 한 번 | 자기 자신을 준비하는 일. 컴포넌트 캐싱, 자기 값 초기화 |
OnEnable | 켜질 때마다 | 켜질 때마다 되돌려 놓아야 하는 일 |
Start | 한 번 | 다른 오브젝트가 준비된 것을 전제로 하는 일 |
2-2) Update, FixedUpdate, LateUpdate
==Update== : 매프레임마다 호출됩니다.
==FixedUpdate== : 고정된 시간 간격마다 호출됩니다.
==LateUpdate== : Update 후에 호출됩니다.
| 시점 | 주기 | 무엇을 두나 |
|---|---|---|
FixedUpdate | 고정 간격 | 물리 계산과 관련된 것 |
Update | 매 프레임 | 그 밖의 대부분 |
LateUpdate | 매 프레임, Update 전부 뒤 | 다른 것이 갱신을 마친 결과를 보고 움직이는 것 |
2-3) OnDisable, OnDestroy
==OnDisable== : 오브젝트가 비활성화될 때 호출됩니다.
==OnDestroy== : 오브젝트가 삭제될때 호출됩니다.
- 스크립트를 비활성화 하더라도 Awake는 호출되고, OnEnable, Start는 호출되지 않는다.
- 반대로 스크립트를 비활성화 하더라도 OnDestroy는 호출된다.


![[Unity] 제네릭과 가변성(variance)](https://data.develog.develrocket.com/upload/develog/gmumdev/1791297148427-udtfz5/_____.png)
![[Unity] IEnumerator 개요](https://data.develog.develrocket.com/upload/develog/gmumdev/1791297506756-dx8ros/_____.png)
하나의 오브젝트는 태어나고 일어나고 시작하고 충돌하고 사라지네요 한명의 인생 같아요!