유니티의 생명주기는 굉장히 길지만 대표적인것으로 나눈다면
- Await -> OnEnable -> Start -> FixedUpdate -> Update -> LateUpdate -> OnApplicationOuit -> OnDisable -> OnDestory
가 대표적이며
각각 어떤 특성을 가졌는지 알아보도록 하겠습니다.
Await
- Start함수가 호출되기 전, 가장 먼저 호출되는 함수
- 오브젝트가 시작하는 동안 비활성화 일 경우 Awake는 실행되지 않음
OnEnable
- 오브젝트화 활성화 된 직후 호출됨
Start
- 스크립트가 활성화된 경우 첫 프레임 Update전에 호출됨
FixedUpdate
- 고정된 시간으로 호출되며 기본 0.02초로 호출
- 종종 Update보다 더 자주 호출되는 함수(무조건 더 자주 불리지 않음)
- 프레임 속도가 낮을 경우 여러번 호출될 수 있으며, 프레임 속도가 높을 경우 프레임 사이에 호출이 안될 수 있음, 즉 프레임 속도에 따라 불리는 위치가 다를 수 있다는 점!
- 모든 물리 계산 및 업데이트는 FixedUpdate 이후 즉시 발생
- 프레임 속도와 관계없이 신뢰할 수 있는 타이머에서 호출되기 때문에, 움직임 계산할 떄 Time.deltaTime을 곱할 필요 없음
Update
- 프레임당 한번 호출되는 함수
LateUpdate
- Update가 끝난 후 한번 호출되는 함수
- Update에서 수행된 모든 것은 LateUpdate가 시작할때 완료되어 있음
- 보통 3인칭 카메라에 사용되며, 캐릭터를 움직이고 Update로 반향을 바꾸게 될 경우 카메라 움직임과 방향을 계산하는 방식으로 할 수 있음
OnApplicationQuit
- 앱이 종료되기 전 모든 게임 오브젝트에서 호출
OnDisable
- 비활성화 상태일때 호출
OnDestory
- 오브젝트에 존재하는 마지막 프레임에 대해 마친 후 최종적으로 이 함수가 호출
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제!
Q. FixedUpdate는 프레임에 영향이 없다고 하는데, 프레임드랍이 발생하면 어떻게 되는가?
A. 고정된 시간으로 호출하는 것이기 때문에 영향이 없음
Q. FixedUpdate를 고정된 시간으로 호출한 방법은?
A. 마지막 프레임을 기준으로 실제 경과 시간을 계산해 실행시키는 방식이라고 함(정확하지 않음),
Q. 만약 프레임드롭으로 인해 경과시간이 길어지면 영향을 받는게 아닌가?
A. 경과 시간이 길어져 만약 3번을 놓쳤다면 그 3번을 연속으로 실행시킨다고 함
(이것 또한 정확하진 않지만 어느정도 일리 있다고 생각)
'유니티 > 유니티 이론' 카테고리의 다른 글
[이론] Addressable (0) | 2025.06.15 |
---|---|
[이론] UniTask (3) | 2025.06.12 |
[이론] async/await (0) | 2025.06.11 |
[이론] 코루틴 (0) | 2025.06.11 |
[이론] Scriptable Object (2) | 2025.06.10 |