유니티 라이프사이클이란?
유니티 라이프사이클은 유니티의 스크립트(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() | 오브젝트가 소멸될 때 호출됩니다. 리소스 해제, 이벤트 구독 취소 등의 작업을 처리합니다. |
'유니티 > 개념' 카테고리의 다른 글
그림자의 일반 편차(+ 그림자에 점/선이 생기는 문제) (0) | 2025.10.10 |
---|