I'm FanJae.

[20260520] Unity ( Unity의 LifeCycle ) 본문

Unity/Unity 초격차캠프

[20260520] Unity ( Unity의 LifeCycle )

FanJae 2026. 5. 20. 19:39

1. Lifecycle 이란?

- Lifecycle은 MonoBehaviour를 상속한 Script가 Unity에 의해 호출되는 실행 흐름을 의미한다.

- 즉, 개발자가 직접 호출하지 않아도, Unity가 정해진 시점에 자동으로 호출하는 메서드다.


2. Lifecycle 메서드

- 주요 메서드를 위주로 적었다.

Awake()
OnEnable()
Start()
FixedUpdatE()
UpdatE()
OnDisable()
OnDestory()

3. 실행 순서

- 대략적인 실행 흐름은 다음과 같다.

- 물론 내부에서는 이 메서드 외에도 많은 메서드의 호출이 일어나게 된다.

Awake() -> OnEnable() -> Start() -> FixedUpdate() -> 
Update() -> OnDisable() -> OnDestory()

4. 각 메서드의 역할

1) Awake

- Script가 처음 로드될 때 호출한다.

- 초기 참조 설정에 사용한다.

2) OnEnable()

- GameObject 또는 Component가 활성화될 때 호출된다.

- 활성화될 때마다 실행된다.

3) Start()

- 첫 번째 Update가 호출되기 전에 한 번 호출된다.

- 초기 설정에 주로 사용된다.

4) FixedUpdate()

- 일정한 시간 간격으로 호출한다.

- 물리 처리에 사용된다.

5) Update()

- 매 프레임마다 호출한다.

- 입력 처리, 일반 게임 로직에 사용한다.

6) OnDisable()

- GameObject 또는 Component가 비활성화될 때 호출한다.

7) OnDestory()

- GameObject 또는 Component가 제거될 때 호출한다.

- 오브젝트는 Object.Destory 또는 씬 종료에 대한 응답으로 파괴될 수 있다.


5. Start() vs Awake()

Awake는 Script가 로드될 때 가장 먼저 초기화 된다. 따라서 다른 컴포넌트 참조를 가져오는 용도로 주로 사용할 수 있다.

- 반면, Start는 첫 Update 전에 호출되므로, 게임 시작 준비 작업을 진행할 때 주로 사용한다.

public class PlayerMove : MonoBehaviour
{
    private Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Start()
    {
        Debug.Log("Player 준비 완료");
    }
}

6. Update()와 FixedUpdate 차이

- Update()는 매 프레임 호출되므로, 키보드 입력, 마우스 입력, 일반 로직을 처리한다.

- FixedUpdate()는 고정된 시간 간격으로 호출하기 때문에 물리 처리에 주로 사용된다.

 
Comments