
在 Unity 中使用延迟更新(Late Update)将允许在其他功能之后可靠地运行某些代码,主要原因也是可以在同一帧内对更新中运行的函数的结果采取一些必要的行为。
这些行为也不是使用延迟更新的唯一原因,一般情况下根据在游戏中构建逻辑的方式,使用延迟更新可以帮助防止一些不必要的错误。
例如玩打地鼠的游戏,此时地鼠洞会随机开放,移动至区域内点击光标,那么对象上的脚本会检查这个触碰点的过程,而光标上的脚本等待鼠标单击之后运行。

在此过程其实这俩个控制脚本是在同一帧内同时更新计算的,光标的点击可能会在对象检查其位置之前发生。
但在尝试同时运行函数时可能会发生这样的错误,假如它们同时运行函数确实发生错误时,一般情况下它们是不可预测的并且难以重现的。
这使得我们难以找到原因,这就是为什么使用延迟更新在游戏中进行逻辑检查是非常有用的行为方式了。
然而,虽然延迟更新对于在更新之后执行代码很有用,但可能会发现需要更多地控制脚本的执行顺序。
为什么呢?因为在过程中需要考虑是否需要在更新之前触发函数!还有固定更新调用的时间以及如何管理协程中的代码顺序等等!
虽然这些问题是真实存在的,但也不用太担心,因为在 Unity 中,可以相对于它们的正常执行时间微调脚本的运行顺序就可以解决这些问题。
综上所述 延迟更新(Late Update) 的行为方式与 更新(Update) 其实是一样的,也是主要的更新事件之一,总是在每帧调用一次,仅仅只是在更新函数完成后在调用延迟更新,只是被调用的时间比更新晚一点点而已。
如果希望在所有内容都完成执行之后能提高对跟踪位置的准确性,那么就使用延迟更新。
PS:固定更新函数比延迟更新基于同帧下具有优先权,总是在更新和延迟更新之前就会被调用。