【unity】Time中各不同

C#

浏览数:682

2019-10-11

AD:资源代下载服务

可以直接先打印下面这些关于时间变量,让我们更加的直观去了解到他们都有些什么不同。

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);
}

截取一段打印来看看吧。

Update
FixedUpdate

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就会停止。

timeScale为0时其他值在Update中的数值

可以看到deltatime为0了,以为着用到这个东西的都会停止,像是移动或者旋转之类的。
具体的怎么用可以看看这个帖子写的很清楚,因为我也没有具体用过这个,万一说错了就不好了,哈哈哈,等以后具体用了,再来写一写具体的用户感受吧。恩,那就先这样吧。

作者:黒可乐