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()로 하게되면 성능 좋은 컴퓨터가 더 호출이 빨라서 유리할수도 있다고 들었다.
반응형