[Unity] Update, FixedUpdate, LateUpdate는 정확히 언제 실행되고, 언제 무엇을 써야할까?

ChangBeom·2일 전

Unity

목록 보기
17/17
post-thumbnail

Unity에서 캐릭터 이동, 물리 처리, 카메라 추적, 입력 처리 같은 로직은 Update, FixedUpdate, LateUpdate 중 하나에서 처리되는데,
이 세 함수의 차이를 정확히 이해하지 못하면 카메라 떨림, 물리 오차, 입력 지연 같은 문제가 쉽게 발생한다.

그래서 오늘은 Unity에서 Update, FixedUpdate, LateUpdate가 정확히 언제 실행되고,
각각 어떤 용도로 사용해야 하는지 내부 흐름을 기준으로 정리해보려고 한다.


[1. Unity 프레임 루프에서 Update 계열 함수의 위치]

먼저 Unity는 프레임 단위로 반복되는 메인 루프(Main Loop) 를 기반으로 동작한다.
이 루프 안에서 입력 처리, 물리 연산, 렌더링 그리고 Update 계열 함수들이 순서대로 실행된다.

이 다이어그램을 기준으로 보면 핵심은 다음과 같다.

  • FixedUpdate -> 물리 연산용 고정 루프
  • Update -> 일반 게임 로직 처리
  • LateUpdate -> 프레임 마무리 단계

이 순서를 이해하는 것이 이 글의 핵심이다.


[2. Update는 언제 실행될까?]

Update 는 매 프레임마다 한 번씩 실행되는 함수이다.
즉, 현재 프레임이 60fps라면 초당 약 60번 호출되는 것이다.

void Update()
{
	Move();
    HandleInput();
}

따라서 다음과 같은 로직을 처리하는 데 적합하다.

  • 키보드 / 마우스 입력 처리
  • 캐릭터 이동
  • UI 애니메이션
  • 일반적인 게임 로직

단, Update 는 프레임 수에 따라 실행 횟수가 달라지기 때문에, 이동 처리에는 반드시 Time.deltaTime 을 곱해줘야 한다.

Update는 "시간 기준"이 아니라 "프레임 기준"으로 실행된다.


[3. FixedUpdate는 왜 따로 존재할까?]

FixedUpdateUpdate 와 달리 고정된 시간 간격으로 실행된다. (기본값: 0.02초, 초당 50회)

void FixedUpdate()
{
	rigidbody.AddForce(Vector3.forward);
}

FixedUpdate 는 사실상 물리 연산 전용 루프라고 보면 된다.

  • Rigidbody 이동
  • AddForce
  • 충돌 처리
  • 물리 기반 캐릭터 이동

만약 물리 이동을 Update 에서 처리하면 다음과 같은 문제가 발생한다.

  • 프레임이 떨어지는 순간 이동량이 달라짐
  • 충돌 판정이 흔들림
  • 물체가 튀거나 떨리는 현상이 발생

이 때문에 물리 로직은 반드시 FixedUpdate에서 처리해야 한다.


[4. LateUpdate는 왜 마지막에 실행될까?]

LateUpdate 는 해당 프레임의 모든 Update 가 끝난 뒤 가장 마지막에 실행된다.

void LateUpdate()
{
	camera.transform.position = target.position + offset;
}

이 특성 때문에 LateUpdate 는 다음 작업에 가장 적합하다.

  • 카메라 추적
  • 캐릭터 위치 보정
  • 애니메이션 후처리

캐릭터가 Update에서 이동한 "최종 위치"를 기준으로 카메라가 LateUpdate에서 따라가야 떨림이 발생하지 않는다.


[5. Update / FixedUpdate / LateUpdate 한눈에 보기]

구분UpdateFixedUpdateLateUpdate
실행 기준프레임고정 시간프레임
실행 순서중간가장 먼저가장 마지막
주 용도입력, 일반 로직물리 연산카메라, 보정
Time 기준deltaTimefixedDeltaTimedeltaTime
  • Update
    -> 입력 처리, 일반 이동 계산, UI 로직
  • FixedUpdate
    -> Rigidbody 이동, AddForce, 물리 기반 로직
  • LateUpdate
    -> 카메라 추적, 위치 보정, 후처리 연산

[6. 마무리]

Unity에서 Update, FixedUpdate, LateUpdate 는 역할이 명확히 분리된 실행 단계이다.

이 차이를 정확히 이해하지 못하면,

  • 카메라가 흔들리고
  • 물리가 불안정해지고
  • 입력 반응이 어색해진다

반대로 이 구조를 정확히 이해하고 적절히 쓰면, 프로젝트의 안정성과 완성도는 눈에 띄게 올라갈 것이다.

0개의 댓글