Unity C#/개념 및 문법 정리

[Unity C#] Time.deltaTime

routine96 2025. 1. 21. 17:58

Time.deltaTime

Time.deltaTime는 시간 개념으로 각 프레임을 렌더링하는데 걸리는 시간을 계산하는 Unity 함수이다. 프레임이 바뀔 때마다의 시간 간격을 측정한 것이 Time.deltaTime이고 자료형은 float형이다.

 

왜 사용할까? 개인의 컴퓨터의 스펙은 다 다르다. 예를 들어 어떤 컴퓨터는 1초에 100프레임의 속도를 가질수도 있고, 다른 컴퓨터는 1초에 200프레임의 속도를 가질 수 있다.


두 개의 컴퓨터를 사용한다고치고 Time.deltaTime을 사용하지 않고 1프레임마다 y축 방향으로 1f씩 증가하는 코드를 작성해 큐브에 할당해 보자.    

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeEx : MonoBehaviour
{
    void Update() // 매 프레임마다 호출 
    {
        transform.position = 
            new Vector3(
                transform.position.x,
                transform.position.y + 1f,
                transform.position.z);
    }
}

 

실행 결과

위 코드를 두 개의 컴퓨터에서 동작시키면 1초 뒤에는 그림과 같은 결과가 나온다. 이런 식으로 게임을 제작한다면 컴퓨터의 사양에 따라서 결과가 완전히 달라질 수 있다. 이 문제를 해결하기 위해 나온 개념이 Time.deltaTime이다.

 

1초에 100프레임 PC의 경우 Time.deltaTime = 0.01f 이고 (1초에 100번 프레임이 바뀌는 것이고 한 프레임이 바뀌는 시간은 0.01초이다)

 

1초에 200프레임 PC의 경우 Time.deltaTime = 0.005f 이다. (1초에 200번 프레임이 바뀌고 한 프레임이 바뀌는 시간은 0.005초이다)

 

 

 

Time.deltaTime을 사용해 코드를 다시 작성해보자

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeEx : MonoBehaviour
{
    void Update() // 매 프레임마다 호출 
    {
        transform.position = 
            new Vector3(
                transform.position.x,
                transform.position.y + (1f * Time.deltaTime),
                transform.position.z);
    }
}

실행 결과

결과를 보게 된다면 두 컴퓨터 모두 1초 뒤에 y축 방향으로 1 상승한다.

 

이렇게 Time.deltaTime을 사용하면 사용자 PC성능에 상관없이 동일한 퍼포먼스를 보여준다. 그래서 시간에 따른 변화나 이동 등에 자주 사용되는 개념이다.

 

유니티 공식 문서 참고 : https://docs.unity3d.com/kr/current/Manual/TimeFrameManagement.html

 

중요 클래스 - Time - Unity 매뉴얼

Unity의 Time 클래스가 제공하는 중요한 기본 프로퍼티를 사용하여 프로젝트에서 시간과 관련된 값으로 작업할 수 있습니다.

docs.unity3d.com