注意:这些是写在Update语句块中的。
一、Time相关内容主要用来干什么?
时间相关内容主要用于游戏中参与位移,计时,时间暂停等等。
二、3大类
1、Time.deltaTime:增量时间,非固定值
自上一帧(只读)以来的完成时间(秒)。 也就是每帧所走过的时间
这个增量时间,在不同设备上,值不一样。
1秒30帧,Time.deltaTime = 1/30s
1秒189帧,Time.deltaTime = 1/189s
1秒N帧,Time.deltaTime = 1/N 秒
这样,1秒所走过的时间 一定等于 1秒所走过的帧数 * 每帧所走过的时间
常用案例:使某个游戏对象以每秒10米的速度移动。
公式:距离 = 时间 * 速度(此处为10米/秒)
void Update()
{
transform.Translate(0, 0, Time.delatime * 10);
}
解释说明:
众所周知,Update()是每帧执行一次。假如1秒N帧,那么1秒钟,执行N次Update(),每次Update()该游戏对象都会走(Time.deltaTime * 10)这么远。即1秒钟的时间,该游戏对象走了
s = (Time.deltaTime * 10) * N
前面说过,1秒走N帧,则Time.deltaTime = 1/N秒,上述公式计算得出无论N为何值,每秒钟走过的距离一定为10米。
s = (1/N * 10) * N = 10
2、Time.time
此帧开头的时间(仅读),但更倾向于表示游戏运行的时间
在Update()中打印可看到,每帧开始的时间如下:
注意:如果在FixedUpdate()内部调用时,则返回的时FixedTime的固定值,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/15f6c7a99faf3ae26bb0c6829b78533b.png)
3、Time.timeScale:时间缩放
时间流逝的尺度
默认值为1,如果设置小于1,表示时间减慢,如果设置大于1,表示时间加快,用来加速和减速游戏,比如特效播放等。
如果设置等于0,则相当于暂停。
三、时间缩放比例
//时间停止
Time.timeScale=0;
//回复正常
Time.timeScale=1;
//2倍速
Time.timeScale=2;
四、帧间隔时间
Unity编译不设置的情况下疯跑为120帧,可以通过设置来降低速度,不然会发热发烫
帧间隔时间:最近的一帧用了多长时间
主要是用来计算位移的:路程=时间*速度
根据需求选择参与计算的间隔时间
1、游戏暂停就不动,使用deltaTime
print("帧间隔时间"+Time.deltaTime);
2、不受暂停影响,使用unscaledDeltaTime
print("不受scale影响的帧间隔时间"+Time.unscaledDeltaTime);
五、游戏开始到现在的时间
主要是用来单机游戏中计时
1、受scale影响
print("游戏开始到现在的时间"+Time.time);
2、不受scale影响
print("不受scale影响的游戏开始到现在的时间"+Time.unscaledTime);
六、物理帧间隔时间
这里是用FixedUpdate来做,专门处理物理帧更新的函数。(做物理小游戏时使用,但是使用极少)
1、受scale影响
print(Time.fixedDeltaTime);
2、不受scale影响
print(Time.fixedUnscaledDeltaTime);
七、帧数
从开始到现在游戏跑了多少帧(次循环)
print(Time.frameCount);