Unity3D 游戏循环分析(一):生命周期


Unity3d的函数调用有固定的顺序,对于脚本生命周期(Script Lifecycle),官方文档中给出一张时序图如下:

深入理解这张图,可以应对大多数的时序问题。在Initialization、Disable/enable、Decommissioning区域的函数只会调用有限次数,而其他部分都是受控重复或循环调用。其中:

  • Awake 函数在构造脚本对象时调用
  • OnEnable/OnDisable 在每次激活对象时调用
  • Start 在第一次触发脚本时调用
  • OnDestory 在销毁对象时调用

主循环分为物理模拟、游戏逻辑、渲染绘制三个子循环。从Unity实现的方式上看,这三个循环放是在同一个线程中。不过自从Unity3d的5.x版本后,引擎加入了多线程渲染的选项,即将第三步循环放在另一个线程中进行。这样做就可以在固定帧率下降低逻辑循环的压力,降低掉帧现象的发生。至于物理模拟循环,我个人觉得没必要拆出到另一个线程。毕竟线程间通信也需要性能,而物理模拟循环运行到速度一般要快于游戏逻辑,如果出现数据访问的冲突还需要加锁,就得不偿失了。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/5729.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注