Unity

Unity) 유니티의 라이프 사이클

1일1공부실천하자 2025. 6. 2. 22:06

 

Unity 라이프사이클 완전 정리 – 실행 순서와 주요 메서드

 

 

Unity 라이프사이클이란?

 

Unity의 라이프사이클(Lifecycle)은 게임 오브젝트가 생성되고, 활성화되며, 업데이트되고, 파괴되는 전 과정을 통틀어 부르는 용어입니다. 이 흐름 속에서 Unity는 특정 메서드들을 자동으로 호출해주며, 개발자는 이 메서드들을 오버라이드하여 원하는 행동을 정의할 수 있습니다.

 

예를 들어, Start()는 오브젝트가 처음 활성화될 때 한 번만 실행되고, Update()는 매 프레임마다 실행됩니다.

 


 

Unity 라이프사이클의 흐름 순서

 

Unity의 일반적인 MonoBehaviour 라이프사이클 메서드는 다음과 같은 순서로 호출됩니다:

 

  1. Awake()
  2. OnEnable()
  3. Start()
  4. FixedUpdate()
  5. Update()
  6. LateUpdate()
  7. OnGUI() (필요한 경우)
  8. OnDisable()
  9. OnDestroy()

 


 

메서드 설명

 

1. Awake()

 

  • 가장 먼저 호출됨 (씬 로딩 시점에서)
  • 해당 오브젝트가 비활성 상태라도 호출됨
  • 주로 컴포넌트 간 참조 초기화에 사용
void Awake() {
    Debug.Log("Awake: 가장 먼저 실행됨");
}

 

리액트의 useEffect처럼 컴포넌트(오브젝트)가 렌더링되자마자 실행되지만, 렌더링 되어야 실행되는 리액트와 달리, 유니티에서는 비활성화 상태에서도 호출이 되는 차이가 있습니다.

 

 

2. OnEnable()

 

  • 오브젝트가 활성화될 때 호출됨
  • Awake 이후, 다시 활성화될 때도 재호출됨

void OnEnable() {
    Debug.Log("OnEnable: 오브젝트가 활성화될 때마다 호출");
}

 

 

 

3. Start()

 

  • 오브젝트가 활성 상태이고, 모든 Awake()OnEnable()이 완료된 후 한 번만 호출
  • Start()는 종종 게임 초기화에 사용됨
void Start() {
    Debug.Log("Start: 첫 프레임 전에 한 번만 호출됨");
}

 

 

 

5. Update()

 

  • 매 프레임마다 호출됨
  • 사용자 입력 처리, 상태 업데이트 등에 사용
void Update() {
    Debug.Log("Update: 매 프레임마다 호출됨");
}

 

 

6. LateUpdate()

 

  • Update()가 모두 끝난 후 호출
  • 카메라 따라가기 등에 적합
void LateUpdate() {
    Debug.Log("LateUpdate: 모든 Update() 이후 호출됨");
}

 

 

 

7. OnGUI()

 

  • UI 이벤트가 있을 때마다 호출
  • 구 Unity UI 시스템에 사용됨 (새 UI 시스템인 UGUI나 UI Toolkit에서는 잘 안 씀)
void OnGUI() {
    GUILayout.Label("OnGUI: UI 이벤트 처리");
}

 

9. OnDestroy()

 

  • 오브젝트가 삭제되거나 씬이 종료될 때 호출됨
  • 리소스 정리, 저장 등 처리
void OnDestroy() {
    Debug.Log("OnDestroy: 오브젝트가 파괴될 때 호출됨");
}

 

 

아래는 GPT에게 부탁한 자료입니다. 간단하고 보기 좋게 요약을 해주네요.

 

메서드설명

Reset() 컴포넌트가 처음 붙을 때 Inspector 초기화
OnApplicationQuit() 게임 종료 시 호출됨
OnTriggerEnter() Collider가 충돌 영역에 진입할 때
OnCollisionEnter() Rigidbody끼리 물리 충돌 시

 

목적추천 메서드

참조 초기화 Awake()
게임 시작 시 한 번 실행 Start()
물리 연산 FixedUpdate()
키보드/마우스 입력 처리 Update()
카메라 따라가기 등 LateUpdate()
리소스 정리 OnDestroy()