Unity

Unity - Update(), FixedUpdate(), LateUpdate()

Dev_Jen 2025. 7. 1. 12:03
반응형

✅ Unity의 3가지 주요 루프 함수

함수 이름실행 주기용도특징
Update() 매 프레임마다 사용자 입력, 일반 로직 프레임 속도에 따라 실행 빈도 달라짐 (가변)
FixedUpdate() 고정 시간 간격마다 물리 연산 (Rigidbody) 물리 시스템과 동기화
LateUpdate() Update() 이후 카메라 추적, 뒷정리 작업 모든 Update()가 끝난 후 실행
 

✅ 1. Update()

🔸 언제 실행됨?

  • 매 프레임마다 1번씩 실행
  • 프레임 수에 따라 실행 빈도가 달라짐 (60FPS면 초당 60번, 30FPS면 초당 30번)

🔸 주로 어디에 사용?

  • 사용자 입력 처리 (키보드, 마우스 등)
  • UI 업데이트
  • 시간 기반 이동 (예: transform.Translate(speed * Time.deltaTime))

🔸 주의할 점

  • 프레임이 떨어지면 Update()도 늦어짐 → 물리 연산에 부적절

✅ Update()는 **컴퓨터의 성능(FPS)**에 따라 호출 빈도가 달라진다

🔹 요점 정리:

  • Update()는 렌더링 프레임마다 1번씩 호출
  • 그래서 컴퓨터 성능이 좋고 FPS가 높으면 자주 실행
  • 반대로 성능이 낮으면 실행 간격이 늘어남

✅ 2. FixedUpdate()

🔸 언제 실행됨?

  • 물리 프레임마다 고정 간격으로 실행됨
    • 기본값: 0.02초마다 (50회/초)

🔸 주로 어디에 사용?

  • Rigidbody를 사용하는 물리 기반 움직임
  • 힘(AddForce) 적용
  • 충돌 감지 처리

🔸 주의할 점

  • Time.deltaTime 대신 Time.fixedDeltaTime 사용
  • Input.GetKey()는 여기서 사용 X → 입력은 Update()에서 받고, 결과만 전달해야 함

✅ 3. LateUpdate()

🔸 언제 실행됨?

  • 모든 Update()가 끝난 후, 한 프레임 내에서 한 번 실행

🔸 주로 어디에 사용?

  • 카메라 추적 로직
  • 캐릭터 움직임이 모두 끝난 뒤에 카메라 위치를 갱신할 때
  • 뷰포트나 UI 위치 정렬

🔎 이렇게 하면 플레이어가 움직인 이후에 카메라가 따라가기 때문에 딜레이 없이 자연스러움


✅ 정리 비교표

항목UpdateFixedUpdateLateUpdate
실행 주기 프레임마다 (가변) 고정 간격 (기본 0.02초) 프레임마다, Update 후
입력 처리 ✅ 사용함 ❌ 부적절 ❌ 부적절
물리 처리 ❌ 부정확함 ✅ 정확함 ❌ 부적절
카메라 추적 ❌ 비자연스러움 ❌ 부적절 ✅ 이상적
Rigidbody 조작 ❌ 피해야 함 ✅ 사용해야 함 ❌ 사용 안 함
 

✅ 언제 뭘 써야 할까?

목적사용 함수
키보드 입력 감지 Update()
플레이어의 위치 이동 (비물리) Update() + Time.deltaTime
Rigidbody 이동, 점프, 힘 적용 FixedUpdate()
카메라가 캐릭터를 따라가도록 설정 LateUpdate()
애니메이션 이후 UI 위치 조정 LateUpdate()

 

흠... 내가 알기로는 멀티플레이 할떄도 FixedUpdate()를 써야하는걸로 알고있다. Update()로 하게되면 성능 좋은 컴퓨터가 더 호출이 빨라서 유리할수도 있다고 들었다.

반응형