Unity Update()与FixedUpdate() 区别和比较

发布于 2022-10-31  219 次阅读


大家都知道 void Update() 是每一帧运行一次的。

FixedUpdate 其实可以每帧运行‘一次’、‘零次’或‘多次’,具体取决于时间设置中设置的每秒物理帧数以及帧速率的快/慢。

所以:

出于这个原因,在施加力、扭矩或其他与物理相关的函数时应该使用 FixedUpdate - 因为您知道它将与物理引擎本身完全同步地执行。

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

Update()

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

FixedUpdate()

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

*要记住的一件事:“输入”也可以在框架上工作。由于击键通常旨在触发物理系统上的力,因此在 FixedUpdate() 中使用 GetKeyDown/Up 是一个常见的陷阱。这将导致点击丢失,因为这些函数仅在一个 Frame 中返回 True,因此可能会跳过整个 FixedUpdate() 事件。

Unity 官方学习链接 [FixedUpdate Vs Update] 里面有视频,方便学习和理解 [https://learn.unity.com/tutorial/update-he-fixedupdate#]