U1L6——时间相关Time

Time

时间相关内容 主要 用于游戏中参与位移、计时、时间暂停等
最常用的就是

  1. 帧间隔时间 计算位移相关内容
  2. 时间缩放比例 用来暂停 或者倍速等等
  3. 帧数(帧同步)

Important Classes - Time and frame rate management - Unity 手册

本章代码关键字

1
2
3
4
5
6
7
8
Time.timeScale                //时间缩放相关属性,调整该属性可以修改时间快慢,1是正常速度,0是时间停止,2是二倍速,以此类推
Time.deltaTime //获取帧间隔时间属性,获取每两帧之间的时间,受到时间缩放影响,可以通过这个来实现位移等操作
Time.unscaledDeltaTime //获取不受时间缩放以及暂停影响的帧间隔时间属性
Time.time //获取游戏开始到现在的时间的属性,不受scale影响,主要用来计时
Time.unscaledTime //获取不受scale影响游戏开始到现在的时间的属性
Time.frameCount //获取从开始到现在游戏跑了多少帧的属性
Time.fixedDeltaTime //获取物理帧间隔时间属性,获得物理帧间隔时间,受到时间缩放影响
Time.fixedUnscaledDeltaTime //获取不受时间缩放以及暂停影响的物理帧间隔时间属性

时间缩放比例

时间缩放相关属性,调整该属性可以修改时间快慢,1是正常速度,0是时间停止,2是二倍速,以此类推

1
2
3
4
5
6
//时间停止
Time.timeScale = 0;
//正常时间
Time.timeScale = 1;
//二倍速
Time.timeScale = 2;

帧间隔时间

帧间隔时间 主要是用来计算位移
路程 = 时间 * 速度
根据需求 选择参与计算的间隔时间
如果希望 游戏暂停时就不动的 那就使用deltaTime
如果希望 不受暂停影响 unscaleDeltaTime
帧间隔时间:最近的一帧 用了多长的时间(单位是秒)

1
2
3
4
//受scale影响
print("帧间隔时间:" + Time.deltaTime);
//不受scale影响的帧间隔时间
print("不受scale影响的帧间隔时间:" + Time.unscaledDeltaTime);

游戏开始到现在的时间

它主要用来计时 单机影响中计时

1
2
3
4
//受scale影响
print("游戏开始到现在的时间" + Time.time);
//不受scale影响
print("不受scale影响的游戏开始到现在的时间" + Time.unscaledTime);

帧数

从开始到现在游戏跑了多少帧

1
print(Time.frameCount);

物理帧间隔时间

物理帧间隔的时间,注意,任何物理相关的内容都要写在FixedUpdate()里!

1
2
3
4
5
6
7
private void FixedUpdate()
{
//受scale影响
print("物理帧间隔时间" + Time.fixedDeltaTime);
//不受scale影响
print("不受scale影响的物理帧间隔时间" + Time.fixedUnscaledDeltaTime);
}