Unity3d中的fixedUpdate时间间隔是否真的不变?

时间:2016-03-10 13:54:43

标签: c# unity3d timestamp

根据Unity文档,在固定时间步骤中调用FixedUpdate。当我们在FixedUpdate回调中输出time.Deltatime时可以看到这一点。

但是,当我尝试在FixedUpdate回调中使用.Net时间系统(即TimeDate.now.millisecond)检查deltatime时,deltatime的输出不是常量。

我怀疑Unity3d使用的时钟与我的电脑时钟不一样。但我不确定我是否正确。有谁知道这个的原因?

谢谢

注意:主要问题是为什么使用.NET DateTime.now捕获连续的FixedUpdate()之间的间隔时间会产生不一致的时间步长,同时使用Time.Deltatime显示一致的时间步长。

1 个答案:

答案 0 :(得分:0)

请检查this

  

FixedUpdate:通常比Update更频繁地调用FixedUpdate。   如果帧速率较低,则可以每帧调用多次   如果帧速率是,则根本不能在帧之间调用   高。所有物理计算和更新都会立即发生   FixedUpdate。在FixedUpdate中应用移动计算时,   您不需要将您的值乘以Time.deltaTime。这是   因为FixedUpdate是在一个可靠的计时器上调用的,独立于   帧率。

在图像中,您可以在FixedUpdate State附近阅读:

  

如果固定,物理周期可能每帧发生一次以上   时间步长小于实际的帧更新时间。

如果您需要在FixedUpdate中查看时间,则应使用Time.fixedDeltaTime