[Unity] 유니티의 업데이트 함수들

muchan
muchan
∙∙조회 12

Unity의 Update, FixedUpdate, LateUpdate

게임 로직, 상호작용, 애니메이션, 카메라 포지션 트래킹 등 다양한 상황에서 사용할 수 있는 업데이트 함수들이 존재한다.일반적으로 Update 함수에 대부분의 작업을 수행하지만, 상황에 따라 적절한 함수를 선택하는 것이 중요하다.

Update

매 프레임마다 실행되는 기본 업데이트 함수

Update는 프레임마다 한 번 호출됩니다. 프레임 업데이트를 위한 주요 작업 함수이다.

  • 화면이 한번 그려질 때마다 호출된다
  • FPS에 따라 호출 횟수가 달라진다(60fps면 초당 60번)
  • 프레임 단위: Time.dletaTime
  • 키 입력 처리, 일반적인 게임 로직, UI업데이트에서 사용한다

FixedUpdate

고정된 시간 간격으로 업데이트 되는 함수

모든 물리 계산 및 업데이트는 FixedUpdate후 즉시 실행된다.

  • 기본적으로 0.02초마다 호출된다
  • FPS와 상관없이 일정하게 실행된다
  • 물리 계산은 여기서 해야 정확한 동작이 나온다
  • Rigidbody 움직임, 힘 적용, 충돌 관련 처리에서 사용한다

LateUpdate

Update가 전부 끝난 후 실행되는 함수

LateUpdate는 Update가 끝난 후 프레임당 한 번 호출된다.

  • 모든 Update가 끝난 뒤 호출
  • "나중에 처리해야 하는 것" 담당
  • 카메라 따라가기, 위치 보정, 다른 오브젝트 결과 기반 처리에서 사용한다

연습해보기

csharp
using UnityEngine;

public class UpdateOrderTest : MonoBehaviour
{
    private void FixedUpdate()
    {
        if (Time.frameCount > 3) return;
        Debug.Log($"[Frame {Time.frameCount}] 1. FixedUpdate");
    }

    private void Update()
    {
        if (Time.frameCount > 3) return;
        Debug.Log($"[Frame {Time.frameCount}] 2. Update");
    }

    private void LateUpdate()
    {
        if (Time.frameCount > 3) return;
        Debug.Log($"[Frame {Time.frameCount}] 3. LateUpdate");
    }
}

각 Update마다 Time.frameCount를 통해 시작 후 3프레임 까지 누적 프레임 수를 로그로 찍었다

위는 실행 결과고 LateUpdate는 Update뒤에 바로 실행되는 것을 확인할 수 있다.

재미있는 점은 FixedUpdate가 Frame3에서 4번 호출됐는데

Update가 실행되기 전까지 밀린 물리 연산이 한꺼번에 처리된 것이다.