본문 바로가기

Unity

[Unity] 라이프사이클

초기화 단계

  • Awake()
    • 게임 오브젝트가 활성화되었을 때 가장 먼저 호출.
    • 같은 GameObject에 붙은 컴포넌트를 참조하거나, 자신의 상태를 초기화하는 데 적합
    • 비활성 상태에서도 실행됨 (SetActive(false)여도 호출됨).
  • OnEnable()
    • 오브젝트가 활성화될 때 호출.
    • Awake 이후 호출되며, 오브젝트가 꺼졌다가 다시 켜질 때마다 호출됨.
  • Start()
    • Awake 및 OnEnable 호출 후, 첫 프레임 업데이트 직전에 한 번 호출.
    • 다른 컴포넌트가 초기화된 이후 실행되므로, 상호작용 설정에 적합.

게임 루프 (매 프레임 호출)

  • Update()
    • 매 프레임 호출됨.
    • 키 입력, 캐릭터 이동 등 일반적인 게임 로직 처리.
  • LateUpdate()
    • 모든 Update() 실행 후 호출됨.
    • 카메라 추적, 애니메이션 후처리 등에 사용.
  • FixedUpdate()
    • 물리 연산용 메서드.
    • 일정한 시간 간격(물리 시간 스텝)으로 호출됨.
    • Rigidbody 이동, Force 적용 등에 사용.

렌더링 이후

  • WaitForEndOfFrame() (코루틴에서)
    • 해당 프레임의 렌더링이 완료된 후 실행되는 코루틴 타이밍.

비활성화 및 종료

  • OnDisable()
    • 오브젝트가 비활성화될 때 호출.
    • OnEnable()과 반대.
  • OnDestroy()
    • 오브젝트가 파괴될 때 호출.
    • 메모리 해제 및 이벤트 해제 등 정리에 사용.

기타 (씬 로딩 관련)

  • OnApplicationQuit()
    • 애플리케이션 종료 시 한 번 호출.
  • OnApplicationPause(bool pause)
    • 앱이 일시정지될 때 호출됨 (모바일에서 홈버튼 등).
  • OnApplicationFocus(bool focus)
    • 포커스가 바뀔 때 호출 (활성화 여부).