1. 개념 정리
Time.deltaTime은 이전 프레임과 현재 프레임 사이에 걸린 시간을 나타낸다.
이는 보통 Update() 함수에서 사용되며, 프레임 속도(FPS)에 관계없이 일정한 움직임과 연산을 보장하기 위해 사용된다.
Unity는 Update()를 프레임마다 호출하므로, FPS가 높을수록 Update()가 더 자주 호출된다.
이때 Time.deltaTime을 사용하지 않으면,
컴퓨터 사양에 따라 다른 결과를 도출하게 된다.
따라서 Time.deltaTime은 1초당 일정한 이동량/속도를 유지하기 위한 보정 값으로 반드시 필요하다.
2. 사용 예시
void Update()
{
float speed = 5f; // 초당 5 이동
transform.Translate(Vector3.right * speed * Time.deltaTime);
}
- 위 코드에서 speed는 초당 이동 속도
- Time.deltaTime은 보통 60FPS 기준으로 약 0.01666f
- 따라서 1초 동안 약 60번 호출되며, 총 이동 거리는 speed * 1초로 일정하게 유지된다
3. 관련 개념
| 항목 | 설명 |
| Time.deltaTime | 이전 프레임과 현재 프레임 사이의 시간 (Update에서 사용) |
| Time.fixedDeltaTime | FixedUpdate 간의 시간 간격 (기본값 0.02초) |
| Time.unscaledDeltaTime | 타임 스케일(Time.timeScale)에 영향을 받지 않는 deltaTime |
- FixedUpdate()에서 물리 연산 처리 시에는 Time.fixedDeltaTime 사용
- 게임 일시정지 중에도 흐르는 시간 계산에는 unscaledDeltaTime 사용
4. 개인적인 생각
개발 초기에 Time.deltaTime을 생략한 채로 이동 코드를 작성한 적이 있었는데,
FPS가 높을수록 캐릭터가 너무 빨리 움직이는 버그를 겪고 나서 중요성을 체감하게 되었다.
지금은 Update()에서 뭔가를 이동하거나 변화시킬 때는
Time.deltaTime을 곱해주는 습관이 자연스럽게 자리 잡았다.
특히 “1초당 얼마만큼”이라는 개념을 코드로 옮길 때 핵심 역할을 해준다고 느낀다.
'Unity > 개념' 카테고리의 다른 글
| [Unity] 스텍(Stack)과 큐(Queue) (4) | 2025.08.03 |
|---|---|
| [Unity] 유니티 생명 주기 (0) | 2025.08.02 |
| [Unity] 제네릭에 대하여 (2) | 2025.08.01 |
| [Unity] 코루틴과 인보크 (1) | 2025.07.31 |
| [Unity] Override와 Overloading (2) | 2025.07.30 |