Update
和FixedUpdate
方法之间的区别是什么?这些方法应该何时使用?
答案 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()
间隔是一致的,即均匀间隔答案 4 :(得分:1)