可以直接先打印下面这些关于时间变量,让我们更加的直观去了解到他们都有些什么不同。
private void Update()
{
Debug.Log("**************我是分割线*************");
Debug.Log("time:" + Time.time);
Debug.Log("deltatime" + Time.deltaTime);
Debug.Log("timeScale:" + Time.timeScale);
Debug.Log("fixedDeltatimetime:" + Time.fixedDeltaTime);
}
private void FixedUpdate()
{
Debug.LogWarning("**************我是分割线*************" );
Debug.LogWarning("time:" + Time.time);
Debug.LogWarning("deltatime:" + Time.deltaTime);
Debug.LogWarning("timeScale:" + Time.timeScale);
Debug.LogWarning("fixedDeltatimetime:" + Time.fixedDeltaTime);
}
截取一段打印来看看吧。
Time.deltaTime
是距离上一次调用Update或FixedUpdate所用的时间。
通俗点理解就是在移动或者转向等物体操作中,用这个就可以转为以秒来计算,如下面的就是以每秒10米的距离走。
void Update() {
float translation = Time.deltaTime * 10;
transform.Translate(0, 0, translation);
}
在Update这是要根据Update刷新率有关。
在FixedUpdate这个是与fixedDeltaTime一样的。
Time.time
这个值是程序开始运行那一刻开始计时的数值。
Time.fixedDeltaTime
这个是表示FixedUpdate调用的时间间隔的。可以在Edit>Project Setting>Time>Fixed Timestep 这里设置,也可以用代码设置,单位是秒。
Time.fixedDeltaTime = 1;
Time.timeScale
这个用来做游戏加速和暂停,这个值默认为一。简单可以理解为游戏的播放速度,当速度为0时就差不多暂停。值得注意的是当这个值为0时,Update与LateUpdate是不会停止刷新的,FixedUpdate就会停止。
可以看到deltatime为0了,以为着用到这个东西的都会停止,像是移动或者旋转之类的。
具体的怎么用可以看看这个帖子写的很清楚,因为我也没有具体用过这个,万一说错了就不好了,哈哈哈,等以后具体用了,再来写一写具体的用户感受吧。恩,那就先这样吧。