Unity3D 时间计量方式(三):间隔时间


有了上面的概念,间隔时间就好理解很多。间隔时间的计算方法为两帧之间的差时。它也会用在很多场景中,例如:在计算距离时,我们通常会用间隔时间与速度相乘,这样得到的结果就是每秒的位移,而不是每帧的位移。

理想情况下,帧率不会发生改变,也是就说逻辑计算的频率是固定的。如果游戏时间线缩放变小,即游戏变慢,实际单位时间内运行的逻辑计算次数就将增加。为了使最终结果相同,游戏时间线中的间隔时间就会变短,即游戏间隔时间与游戏时间流逝速率成正比。当然,更多情况是帧率会抖动。如果我们需要使用过去或当前的间隔时间,来预测物体未来的位置状态,使用平均间隔时间会更加合理。

在Unity中通过Time.unscaledDeltaTime可以取到真实的间隔时间,Time.deltaTime可以取到游戏间隔时间,Time.smoothDeltaTime可以取到平均的间隔时间,这个“平均”是基于游戏时间线的。

由于OnGUI函数每帧会被调用多次,虽然每次调用的值都是本帧的值,但影响我们观察数据,因此笔者将对应输出写在了Update函数中。在TestTime.cs文件中加入如下代码:

编辑完成后,运行代码。当调整游戏视图中的TimeScale为0.5时,可以看到游戏真实的流逝时间是0.008,而间隔时间为0.004,实际间隔时间的一半。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/5746.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注