TIL 25.02.14 - Unity 라이프사이클

강진규·2025년 2월 14일

Today I Learned

목록 보기
13/34
post-thumbnail

본격적으로 Unity 입문에 들어가기전 기본적인 내용이지만 자세히는 몰랐던 것인데
확실히 알고가야 될 것 같아서 정리를 해봤다.


[ Unity 라이프사이클 ]

Unity에서 게임 오브젝트와 스크립트가 실행되는 순서를 정의

  • 주요 단계

    • Awake
    • Start
    • Update
    • FixedUpdate
    • LateUpdate
  • 중요성
    각 단계가 명확히 구분되어 있어, 적절한 함수에 코드를 배치하면 효율적인 게임 로직을 구현 가능


[ Awake ]

초기화 작업에 사용
항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출
게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않음

[ Start ]

스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출

스크립트 생성 후 들어가면 기본적으로 생성 되있고, 친절하게 주석으로 설명을 써놨다.

[ Update ]

프레임당 한 번 호출. 프레임 업데이트를 위한 주요 작업 함수
주로 입력 처리와 게임 로직에 사용

이녀석도 마찬가지인데 주석으로 써있다. 가장 많이 쓰는 함수라 그런 건가 싶다.

[ FixedUpdate ]

고정 프레임마다 호출되는 함수 (호출되는 간격은 일정)
모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생
Rigidbody를 이용한 이동 같이 물리적인 움직임을 구현하는데 사용
종종 Update 보다 더 자주 호출됨 (프레임 속도에 따라)

[ LateUpdate ]

Update 가 끝난 후 프레임당 한 번 호출
Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료
카메라 추적 등에 사용

void Awake()
{
	// Start 함수 전에 호출, 초기화 작업에 사용
    Debug.Log("Awake 호출 " + Time.deltaTime);
}

void Start()
{
	// 첫 번째 프레임 업데이트 전에 호출
    Debug.Log("Start 호출 " + Time.deltaTime);
}

void Update()
{
    // 입력 처리와 게임 로직에 사용
    Debug.Log("Update 호출 " + Time.deltaTime);
}

void FixedUpdate()
{
    // Rigidbody를 이용한 이동 같이 물리적인 움직임을 구현하는데 사용
    Debug.Log("FixedUpdate 호출 " + Time.deltaTime);
}

void LateUpdate()
{
    // 카메라 추적 등에 사용
    Debug.Log("LateUpdate 호출 " + Time.deltaTime);
}

이렇게 작성하고 Debug.Log가 찍히는 걸 보려고 했다.

엄청난 Log에 당황한 마우스

아무튼 찍힌 Log를 보면
Awake > Start > FixedUpdate > Update > LateUpdate 순으로
호출되는 것을 확인 할 수 있었고,
FixedUpdate는 일정한 간격으로 호출 된다는 것을 확인 할 수 있었다.


솔직히 Awake, Start, Update는 1주차 때 봐서 알고 있는 녀석들인데,
뒤에 두 놈은 오늘 처음 봤다. 자주 사용하는지는 모르겠지만, 주요 단계라고
되있는걸 보면 아무튼 중요한 놈들 인것 같아서 같이 정리해봤다.

0개의 댓글