UPL4-2——生命周期函数的问题
UPL4-2——生命周期函数的问题
生命周期函数的调用顺序
我们在进行性能调试和问题定位时,如果不了解或忽略生命周期函数的执行顺序,可能会导致调试误判或遗漏真实性能问题
比如:
-
错误归因性能开销的位置
在 Profiler 中看到帧开头有较大开销
误以为是某个Update() 耗时过长,但实际是前面的Start() 或OnEnable() 初始化造成的
我们不能只是关注Update 部分,也要关注在Awake、OnEnable、Start中的逻辑
因为也可能是因为某些逻辑初始化造成的卡顿 -
逻辑初始化顺序错乱导致异常
场景中不同脚本中的相同生命周期函数的执行时机是不确定的
当两个脚本相互依赖时,比如 A 依赖 B 中的初始化数据
那么我们一定要保证 A 在使用 B 数据时,B 已经被初始化了如果要指定某些脚本生命周期函数执行的优先级,可以在 Project Setting 内的 Script Execution Order 内进行配置
详见:U1L2——生命周期函数 的 不同脚本间生命周期函数的执行顺序 部分
等等
不用的生命周期函数
如果在脚本中定义了生命周期函数,但没有在其中写任何逻辑,他们仍然会带来额外的性能开销,
因此我们要避免在脚本中写空的生命周期函数,特别是那些会每帧调用的生命周期函数
-
Update -
LateUpdate -
FixedUpdate -
OnGUI
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
