Unity/초보자가 알면 좋을 팁

유니티 Update / LateUpdate / FixedUpdate 사용 원칙 (꿀팁) - 3

추운날_너를_기다리며 2026. 3. 3. 14:51

앞선 꿀팁 1, 2를 숙지했다는 기준으로 실제 구조로 꿀팁을 적었습니다.
꼭 끝까지 읽어보시길...

1️⃣  아키텍처 기준 설계 원칙

좋은 구조는 이렇게 나뉜다:

Input Layer
Logic Layer
Physics Layer
Presentation Layer

Unity 함수와 매핑하면:

Layer Unity 함수
Input Update
Logic Update
Physics FixedUpdate
Presentation LateUpdate

 


2️⃣ MMORPG 기준 — 실제 구조 예시 

이제 MMORPG 만든다고 가정해보자.

🎮 플레이어 캐릭터 구조 예시

📌 1단계 — 입력 처리 (Update)

void Update()
{
    inputDirection = new Vector2(
        Input.GetAxis("Horizontal"),
        Input.GetAxis("Vertical")
    );

    if (Input.GetKeyDown(KeyCode.Space))
        skillInput = true;
}

여기서 하는 일

  • 이동 방향 저장
  • 스킬 버튼 입력 저장
  • 공격 버튼 저장
  • UI 입력 체크
  • 채팅 입력 체크

❗ 절대 이동하지 않음 (Rigidbody라면) - 이유는 꿀팁4에 있습니다.


📌 2단계 — 이동 계산 (Update or FixedUpdate)

🔹 Case 1: Transform 이동 기반

void Update()
{
    Vector3 move = new Vector3(inputDirection.x, 0, inputDirection.y);
    transform.position += move * speed * Time.deltaTime;
}

🔹 Case 2: Rigidbody 기반 (권장)

void FixedUpdate()
{
    Vector3 move = new Vector3(inputDirection.x, 0, inputDirection.y);
    rb.MovePosition(rb.position + move * speed * Time.fixedDeltaTime);
}
 

📌 3단계 — 상태머신 처리 (Update)

void Update()
{
    stateMachine.Update();
}
 
 
  • Idle → Move
  • Move → Attack
  • Attack → Cooldown
  • Skill Casting

이건 프레임 기반이 맞다.


📌 4단계 — 애니메이션 세팅 (Update)

animator.SetFloat("Speed", inputDirection.magnitude);
 
 

애니메이션 파라미터는 Update에서 설정.


 

📌 5단계 — 카메라 추적 (LateUpdate)

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

이걸 Update에서 하면?

→ 캐릭터 이동 후 카메라가 먼저 계산될 수도 있음
→ 1프레임 밀림 발생


📌 6단계 — UI 추적 (LateUpdate)

  • HP바 위치 추적
  • 이름표 위치 추적
  • 월드 좌표 → 스크린 좌표 변환

3️⃣ 네트워크 MMORPG 기준 설계

MMORPG는 여기서 더 정교해진다.

✔ Update에서 하는 것

  • 입력 수집
  • 로컬 예측 이동
  • 패킷 생성
  • 서버에서 받은 패킷 처리
  • 상태머신 업데이트

✔ FixedUpdate에서 하는 것

  • 물리 기반 이동 보정
  • Rigidbody 이동
  • 넉백 계산

✔ LateUpdate에서 하는 것

  • 보간 처리
  • 카메라
  • 위치 스무딩
  • 렌더링 보정

4️⃣ 가장 흔한 실수

❌ 입력을 FixedUpdate에서 받음

→ 입력 씹힘

❌ 카메라를 Update에서 이동

→ 프레임 밀림

❌ Rigidbody를 Update에서 이동

→ 충돌 오작동

❌ 상태머신을 FixedUpdate에서 돌림

→ 프레임마다 다르게 동작


5️⃣ 실전 설계 규칙 요약

🔥 규칙 1

입력은 무조건 Update

🔥 규칙 2

물리는 FixedUpdate

🔥 규칙 3

카메라는 LateUpdate

🔥 규칙 4

상태머신은 Update

🔥 규칙 5

Rigidbody 쓰면 transform 직접 건들지 말 것

 


6️⃣ 고급 설계 팁

✔ 입력 버퍼링 시스템

Update에서 입력 저장 → FixedUpdate에서 소비

Update → inputCache 저장
FixedUpdate → inputCache 기반 물리 이동

✔ 실행 순서 강제

Unity Script Execution Order 사용
핵심 매니저 먼저 실행

 

✔ Update 분리 패턴

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

void FixedUpdate()
{
    HandlePhysics();
}

void LateUpdate()
{
    HandlePresentation();
}

 

🔚 결론 — 개발자 기준 철학

Update = 의사결정
FixedUpdate = 물리적 실행
LateUpdate = 시각적 정리