Unity
Unity) 유니티의 라이프 사이클
1일1공부실천하자
2025. 6. 2. 22:06
Unity 라이프사이클 완전 정리 – 실행 순서와 주요 메서드
Unity 라이프사이클이란?
Unity의 라이프사이클(Lifecycle)은 게임 오브젝트가 생성되고, 활성화되며, 업데이트되고, 파괴되는 전 과정을 통틀어 부르는 용어입니다. 이 흐름 속에서 Unity는 특정 메서드들을 자동으로 호출해주며, 개발자는 이 메서드들을 오버라이드하여 원하는 행동을 정의할 수 있습니다.
예를 들어, Start()는 오브젝트가 처음 활성화될 때 한 번만 실행되고, Update()는 매 프레임마다 실행됩니다.
Unity 라이프사이클의 흐름 순서
Unity의 일반적인 MonoBehaviour 라이프사이클 메서드는 다음과 같은 순서로 호출됩니다:
- Awake()
- OnEnable()
- Start()
- FixedUpdate()
- Update()
- LateUpdate()
- OnGUI() (필요한 경우)
- OnDisable()
- 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() |