
Update(更新) 是 Unity 中的一个特殊函数,它在每个脚本、每一帧期间都会被调用,这意味着 Update 以可变速率调用,具体取决于游戏运行的速度。
另一方面,FixedUpdate(固定更新) 以测量的间隔调用,这意味着 FixedUpdate 始终以一致的速率调用,默认情况下为每秒 50 帧。
通常,游戏中的大部分逻辑都将发生在 Update 中,或者直接在 Update 循环内,或者由本身由 Update 提供支持的事件触发。
而与 Unity 的物理系统同步调用的 Fixed Update 通常仅用于基于物理的功能。
因此,作为一般规则,最好将逻辑代码放在更新中,将基于物理的函数放在固定更新中。
但是,总有一些事情没有我们想象的那么简单。
例如,要在 Fixed Update 中移动对象,可能需要进行输入检查,为了正常工作,需要在 Update 中。
同样,有时会希望从基于更新的函数中访问物理系统,包括 Raycast 和 Colliders。
这就是为什么仅仅将物理放在 FixedUpdate 中并将其他所有内容放在 Update 中并不总是像听起来那么简单。
因此,当调用 Fixed Update 时,它有助于了解内部运行实际发生的情况。