Update&和Update之间的区别是什么? Unity中的FixedUpdate?

时间:2015-12-24 05:24:36

标签: unity3d

UpdateFixedUpdate方法之间的区别是什么?这些方法应该何时使用?

5 个答案:

答案 0 :(得分:42)

来自forum

  

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

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

  

因此,应用时应使用FixedUpdate   力,扭矩或其他与物理有关的功能 - 因为你知道   它将与物理引擎本身完全同步执行。

     

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

答案 1 :(得分:36)

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

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

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

答案 2 :(得分:4)

添加到其他答案,更新是帧速率的时间,而不是物理计算速率。这意味着通常当某些内容更改了视觉效果时,您希望在Update中完成它,而不是使用FixedUpdate。这确保了在渲染帧的那一刻总是及时。我遇到过很多情况,我的动作看起来并不顺畅,因为我在FixedUpdate中计算了它。

在Update中完成某项操作的唯一潜在成本应该在FixedUpdate中完成,因为你的物理保真度可能会下降,特别是如果你的帧速率很低(但一般来说这是一个应该修复的单独问题,所以在FixedUpdate而不是Update中放置一些东西通常不是一个好理由。

如果您希望控制不同脚本执行更新的顺序,那么FixedUpdate就是错误的树;你应该看一下像EarlyUpdate这样的东西。

答案 3 :(得分:2)

我注意到这里的大多数答案都清楚地说明了FixedUpdate的优点以及何时使用它。但是,对于何时应该使用常规Update,我没有看到任何明确的示例。以下是来自official Unity tutorial的内容:

Update()

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

FixedUpdate()

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

答案 4 :(得分:1)

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

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

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