UPL4-2——生命周期函数的问题

生命周期函数的调用顺序

我们在进行性能调试和问题定位时,如果不了解或忽略生命周期函数的执行顺序,可能会导致调试误判或遗漏真实性能问题

比如:

  1. 错误归因性能开销的位置

    在 Profiler 中看到帧开头有较大开销
    误以为是某个 Update()​ 耗时过长,但实际是前面的 Start()​ 或 OnEnable()​ 初始化造成的
    我们不能只是关注 Update​ 部分,也要关注在 Awake​、OnEnable​、Start 中的逻辑
    因为也可能是因为某些逻辑初始化造成的卡顿

  2. 逻辑初始化顺序错乱导致异常

    场景中不同脚本中的相同生命周期函数的执行时机是不确定的
    当两个脚本相互依赖时,比如 A 依赖 B 中的初始化数据
    那么我们一定要保证 A 在使用 B 数据时,B 已经被初始化了

    如果要指定某些脚本生命周期函数执行的优先级,可以在 Project Setting 内的 Script Execution Order 内进行配置
    详见:U1L2——生命周期函数 的 不同脚本间生命周期函数的执行顺序 部分

等等

不用的生命周期函数

如果在脚本中定义了生命周期函数,但没有在其中写任何逻辑,他们仍然会带来额外的性能开销,
因此我们要避免在脚本中写空的生命周期函数,特别是那些会每帧调用的生命周期函数

  1. Update
  2. LateUpdate
  3. FixedUpdate
  4. OnGUI