Unity中的Update和FixedUpdate有什么区别?

Kap*_*l11 44 unity-game-engine

UpdateFixedUpdate方法有什么区别,何时应该使用这些方法?

Rah*_*thi 48

来自论坛:

更新每帧运行一次.FixedUpdate可以每帧运行一次,零次或几次,具体取决于在时间设置中每秒设置的物理帧数,以及帧速率的速度/速度.

另请参阅鸭子在同一论坛中给出的答案,以详细解释两者之间的区别.

因此,在应用力,扭矩或其他物理相关函数时应使用FixedUpdate - 因为您知道它将与物理引擎本身完全同步执行.

而Update()与物理引擎的步调可能会更快或更慢,这取决于图形在任何给定时间放在渲染引擎上的负载量,如果用于物理,则会给出相应的变量物理效应!

  • 您提供的链接中的答案是迄今为止我读过的有关该主题的最佳答案。 (4认同)
  • 那么,如果我想移动一个物体,我应该使用哪一个呢? (2认同)

Ric*_*ick 42

FixedUpdate用于与物理引擎同步,因此任何需要应用于刚体的东西都应该在FixedUpdate中发生. 另一方面,更新独立于物理引擎.如果用户的帧速率下降但是你需要一定的计算来继续执行,这可能是有益的,就像你正在更新聊天或voip客户端一样,你需要定期的旧更新.

Unity在这里有一个关于Update vs. FixedUpdate的精彩视频:Unity - Update vs. FixedUpdate

该网站是初学游戏程序员的绝佳资源.


jfu*_*unk 6

我注意到这里的大多数答案都清楚地解释了它的FixedUpdate好处以及何时使用它。然而,我没有看到任何明确的例子来说明何时Update应该使用常规;以下来自Unity官方教程

Update()

  • 调用每一
  • 用于定期更新,例如:
    • 移动非物理对象
    • 简单的定时器
    • 接收输入(又名按键等)
  • 更新间隔调用时间会有所不同,即间隔不均匀

FixedUpdate()

  • 调用每一个物理步骤
  • FixedUpdate()间隔一致,即均匀间隔
  • 用于定期更新,例如调整物理(例如 RigidBody)对象

  • 固定更新被硬锁定到基于CPU时钟的目标速率(我猜),因为两帧之间的时间可变,很容易累积和破坏任何模拟。由于性能原因,更新应该用于不依赖物理、动画等模拟的所有内容。固定更新也只能处理这么多。如果负载太高,它会开始显着减慢游戏速度。 (3认同)

Ram*_*mar 6

Update():包含必须使用视觉渲染执行的代码

FixedUpdate():包含必须与物理交互同步的代码

来源:https : //youtu.be/noXtT_zN-84?t=3057


Sem*_*ono 5

除其他答案外,更新是按帧速率而不是物理计算速率及时进行的。这意味着通常当某些东西改变视觉效果时,您希望在Update(而不是FixedUpdate)中完成。这样可以确保在渲染帧的那一刻始终保持及时。我遇到过很多情况,因为我在FixedUpdate中进行了计算,所以运动看起来不太流畅。

在FixedUpdate中应执行的在Update中执行的操作的唯一潜在成本是物理保真度可能会下降,尤其是当您达到较低的帧速率时(但通常这是一个单独的问题,应该解决,因此通常不应该解决)将其放入FixedUpdate而不是Update的一个很好的理由)。

如果您想控制不同脚本执行更新的顺序,那么FixedUpdate是错误的树状结构。您应该查看的是EarlyUpdate之类的内容