유니티/개념

라이프 사이클

tae-woong 2025. 10. 4. 15:42

 

유니티 라이프 사이클 공식 사진

유니티 라이프사이클이란?

유니티 라이프사이클은 유니티의 스크립트(Script)가 실행되고 소멸되기까지의 정해진 실행 순서를 의미합니다. 우리가 작성한 C# 스크립트(MonoBehaviour를 상속받은 클래스)는 유니티 엔진에 의해 특정 순서에 따라 이벤트 함수(Event Function)들이 자동으로 호출됩니다.

 

주요 이벤트 함수 실행 순서

유니티의 라이프사이클은 크게 초기화(Initialization) → 물리(Physics) → 게임 로직(Game Logic) → 렌더링(Rendering) → 해제(Decommissioning) 단계로 나눌 수 있습니다.

단계 주요 함수 설명
초기화 Awake() 스크립트 인스턴스가 로드될 때 최초 1회 호출됩니다. 컴포넌트나 변수를 초기화할 때 사용하며, Start()보다 항상 먼저 호출됩니다. 오브젝트가 비활성화 상태여도 호출됩니다.
  OnEnable() Awake() 다음, 또는 오브젝트가 활성화될 때마다 호출됩니다.
  Start() 첫 번째 프레임 업데이트 직전1회 호출됩니다. Awake()와 달리, 스크립트가 활성화된 상태여야만 호출됩니다. 다른 스크립트의 Awake()가 모두 끝난 후 호출되므로, 다른 객체와의 참조 설정에 용이합니다.
물리 FixedUpdate() 고정된 시간 간격으로 호출됩니다. (기본값 0.02초) 물리 계산(Rigidbody, 충돌 처리 등)은 프레임 속도에 영향을 받지 않아야 하므로 FixedUpdate()에서 처리하는 것이 정석입니다.
게임 로직 Update() 매 프레임마다 호출됩니다. 프레임 속도에 따라 호출 간격이 달라집니다. 대부분의 게임 로직(입력 처리, 오브젝트 이동 등)이 여기서 처리됩니다.
  LateUpdate() 모든 Update() 함수가 호출된 후에 호출됩니다. 주로 캐릭터를 따라가는 카메라 구현 등, 다른 오브젝트의 Update()가 끝난 후 처리해야 할 로직에 사용됩니다.
렌더링 OnGUI() GUI 이벤트를 렌더링하고 처리하기 위해 호출됩니다. 레거시 GUI 시스템에서 사용합니다.
  OnRenderObject() 씬 렌더링과 관련된 다양한 함수들이 있습니다.
해제 OnDisable() 오브젝트가 비활성화될 때 호출됩니다.
  OnDestroy() 오브젝트가 소멸될 때 호출됩니다. 리소스 해제, 이벤트 구독 취소 등의 작업을 처리합니다.