Time.deltaTime
Time.deltaTime
Time.deltaTime,字面意思是增量时间,官方API解释是完成上一帧所需要的时间(单位为秒)。我们直接Update函数中来打印下看它的值变化:
我们发现每帧打印出来的时间值在动态的变化着,这样看来,这个detatime就是完成一帧所需要的时间。如果我们将Time.deltatime放到FixedUpdate中,则打印出来的值是恒定的,正是FixedUpdate的更新频率0.02s。
回到我们先前用帧移动cube的代码,我们让帧移动距离distancePerFrame乘以Time.deltatime,如果distancePerFrame = 10的话,那就相当于告诉引擎:cube将以每秒10米来沿着z轴移动,这样最大的好处就是我们可以精确的控制位移量。
using UnityEngine; public class MyCube : MonoBehaviour { public float distancePerFrame = 10; void Update () { float translation = distancePerFrame * Time.deltaTime; transform.Translate(0, 0, translation); } }
我们再次运行场景,这次发现cube移动得很平滑了,这都是Time.deltatime的功劳。