TIL(24-10-14) - Unity 기본 개념 및 생명주기(1)
1. Unity 생명 주기(Lifecycle)
- 게임 오브젝트가 생성되고 파괴될 때까지의 흐름을 관리한다.
- 생명 주기 함수를 활용하여 원하는 시점에 코드를 실행할 수 있다.
- 생명 주기 함수는 Monobehaviour를 상속받는 클래스에서 동작한다.
- 생명 주기 함수의 예로는 Awake, OnEnable, Start, Update, FixedUpdate, OnDisable, OnDestroy 등이 있다.
2. Update 문 3가지(Regular, Fixed, Late)의 차이
- 실행 순서가 다르다.(FixedUpdate -> Update -> LateUpdate)
- FixedUpdate는 일정 시간(default: 0.02초)마다 호출된다. / 주로 물리 연산과 관련된 로직에 사용된다.
- Update는 매 프레임마다 호출된다. / 주로 프레임 단위로 반복적인 동작을 처리할 때 사용된다.
- LateUpdate는 모든 Update가 끝난 후 호출된다. / 주로 카메라 위치 조정 등 다른 오브젝트의 업데이트가 완료된 후 처리해야 하는 로직에 사용된다.
3. Start()와 Awake()의 차이
- 실행 순서가 다르다.(Awake -> Start)
- Awake는 인스턴스화 된 직후에 호출된다. / 스크립트가 비활성화 되어 있더라도 실행된다. / 주로 컴포넌트 초기화에 사용된다.
- Start는 첫 번째 프레임 업데이트 전에 호출된다. / 주로 게임 시작 시 초기 설정에 사용된다.
4. OnEnable()과 OnDisable()의 차이
- OnEnable은 오브젝트가 활성화 될 때마다 호출된다.
- OnDisable은 오브젝트가 비활성화 될 때마다 호출된다.
- 이 둘을 활용하여 게임 오브젝트의 활성화/비활성화 상태 전환 시점에서 처리해야 하는 로직을 사용할 수 있다.
5. Awake(), Start(), OnEnable() 호출 순서
- 한 오브젝트 내에서는 Awake, OnEnable, Start 순으로 호출되지만, 여러 오브젝트 간의 Awake와 OnEnable의 호출 순서는 보장되지 않는다.
- Ob1.Awake→Ob2.Awake→Ob1.OnEnable→Ob2.Enable→Ob1.Start→Ob2.Start (x)
Ob1.Awake→Ob1.OnEnable→Ob2.Awake→Ob2.Enable→Ob1.Start→Ob2.Start (o)