- 유니티에서 자신이 제작한 스크립트의 대부분은 'Monobehaviour'라는 인터페이스를 상속받는다.
- 스크립트를 만들면 자동으로 상속받는 형태이니 유니티의 기본 클래스 형태라고 봐도 좋을 것이다.
- 이 'Monobehaviour'가 Scene에서 살아가는 일정한 흐름이 있다. 엔진에서 자동으로 호출해주는 함수들인데 이 패턴의 흐름을 모아 '생명 주기(Life cycle)'라고 한다. 일단 그림으로 먼저 알아보자.
- 첫 'Awake', 'OnEnable', 'Start'함수는 객체가 생성될 때 1회 호출되는 함수다.
- 단, OnEnable은 스크립트에서 객체를 활성화/비활성화시킬 경우가 있는데 객체가 활성화 되었을 때 마다 호출되는 함수이다.
- Update는 3가지 종류가 있다. 'FixedUpdate', 'Update', 'LastUpdate'다.
- 가장 기본적인것이 Update로 매 프레임 마다 실행된다. 일반적으로 유니티를 처음 시작했다면 이 부분에서 거의 모든 로직을 처리할 것이다.
- 그 뒤에 있는 LastUpdate가 바로 Update다음으로 실행된다. Update에서의 결과가 전부 반영된 뒤 작업하고 싶다면 LastUpdate에서 작업하는 것이 맞을 것이다. (ex. 카메라 이동 처리)
- FixedUpdate는 고정된 프레임 주기로 호출되는 함수들이다. Update는 디바이스의 성능이나 게임의 최적화 상황에 따라 framerate가 변하게 되는데 이렇게 되면 프레임 사이 사이의 시간 간격이 다르게 적용된다. 이렇게 되면 물리적인 계산이 필요할 때 상당한 오차가 발생할 수 있다. 그래서 시간 간격이 고정된 FixedUpdate에서 처리해주는 것이 좋다.
- 이렇게 미리 생명 주기를 파악하고 내가 원하는 동작이 어느 동작이 보장되고나서 실행되는지 알고 있어야 게임에 적합한 프로그래밍을 할 수 있다.
'게임 개발 > Unity3D' 카테고리의 다른 글
[Unity | 유니티] 하트 충전 스크립트(로컬 디바이스 시간 기준) (4) | 2019.10.11 |
---|---|
[Unity | 유니티] OnApplicationFocus(bool value) vs. OnApplicationPause(bool value) (1) | 2019.10.08 |
[Unity | 유니티] 스크린 좌표를 월드 좌표, NGUI 좌표로 전환하기 (0) | 2019.09.10 |
[Unity | 유니티] NGUI와 ParticleSystem간 Depth 조정 (1) | 2019.09.06 |
[Unity | 유니티] 메모리 최적화 (0) | 2019.09.06 |