Unity에서 Time 클래스가 제공하는 기본 프로퍼티로 시간과 관련된 값으로 프로젝트에서 작업할 수 있습니다.
참고: 유니티 공식 매뉴얼 https://docs.unity3d.com/kr/2022.1/Manual/TimeFrameManagement.html
Time 클래스의 시간을 측정할 수 있는 프로퍼티.
Time.time : 게임 실행 후 경과한 시간을 초 단위로 반환한다.Time.deltaTime : 마지막 프레임부터 현재 프레임까지의 간격(한 프레임을 그리는 시간)을 초 단위로 반환하고 주로 애니메이션, 이동, 회전 등의 프레임 보정에 사용한다.(FixedUpdate 내부에서 호출되면 Time.fixedDeltaTime을 반환한다.) Time 클래스의 시간을 제어하는 프로퍼티.
Time.timeScale : 시간이 경과하는 속도를 제어한다. Time.fixedDeltaTime : Unity의 * 고정 타임 스텝 루프 간격을 제어한다.Time.maximumDeltaTime : deltatime의 상한을 설정한다.Unity에는 시간을 추적하는 두 가지 시스템이 있는데 그건 변수 타임 스텝 시스템과, 고정 타임 스텝 시스템이다.
변수 타임 스텝 시스템은 각 스텝 사이 시간의 변수 양(프레임 간 시간 간격)을 추적하고,
고정 타임 스텝 시스템은 각 스텝 사이 시간의 고정된 양을 추적 대개 물리 시스템과 연관되어 있다.
Unity는 각 프레임에서 코드를 실행할 수 있도록 Update 메서드를 엔트리 포인트로 제공한다.
컴퓨터의 성능에 따라서 프레임 속도가 달라지므로 프레임마다 변화하는 양을 확대/축소 하기 위해서는 Time.deltaTime을 이용해야한다.
예시
void Update()
{
// transform.Translate(1f, 0, 0) : 성능에 따라 속력이 달라짐
transform.Translate(1f * Time.deltaTime,0,0) // 속력이 일정함
}
타겟 플랫폼에 따라 Application.targetFrameRate 또는 QualitySettings.vSyncCount로 프레임 속도를 설정할 수 있다.
Unity는 각 고정 타임 스텝마다 자체 코드를 실행하기 위해 FixedUpdate 메서드를 엔트리 포인트로 제공한다. (일정한 간격으로 처리할 때 사용)
메인 프레임 업데이트와는 달리 Unity의 물리 시스템은 고정 타임 스텝에 따라 작동한다.
Time.timeScale을 0으로 설정하여 게임을 일시정지할 수 있습니다. 이런 경우 Update 메서드는 여전히 호출되지만, Time.time은 전혀 증가하지 않으며 이때 Time.deltaTime은 0이다.
큰 프레임 지연이 발생했는데 제한이 없다면 이론적으로 한 프레임에서 다음 프레임으로 오브젝트가 이동할 수 있는 거리에 제한이 없기 때문에 움직임이 deltaTime으로 크기가 지정된 오브젝트는 프레임 속도 스파이크 동안 벽을 통해 "글리치"할 수 있으므로 maximumDeltaTime으로 deltaTime의 한도를 제한해야 한다.