Unity 3D - 生命周期 :
执行次序:
Awake -> Start -> OnEnable -> FixedUpdate -> Update -> LateUpdate -> OnGUI -> Reset -> OnDisable -> OnDestory
Awake:用于在游戏开始之前初始化变量或游戏状态,在脚本整个生命周期内仅被执行一次。Awake在所有游戏对象初始化之后执行,因此可以在方法中安全地与游戏对象进行通信 .
Start:仅在所有脚本的Update方法第一次被调用前执行,且仅在脚本实例被启用时执行。Start在所有脚本的Awake方法全部执行完成后才执行 .
OnEnable:当对象变为可用或激活状态时此函数被调用 .
FixedUpdate:在固定的时间间隔执行,不受游戏帧率的影响。所以处理RigidBody时最好用FixedUpdate。FixedUpdate的时间间隔可在工程设置中更改(Edit –> Project Setting –> Time) .
Update:在每次渲染新的一帧时执行。由于该方法调用的频率与设备性能、被渲染对象有关,导致同一游戏在不同机器的效果不一致(因为Update方法的执行时间间隔不一致).
LateUpdate:所有脚本的Update方法调用后执行。例如相机跟随即是在LateUpdate方法中实现 .
OnGUI:在渲染和处理GUI事件时执行 .
Reset:用户点击属性监视面板(Inspector)的Reset按钮或首次添加该组件时执行,仅在编辑模式下执行 .
OnDisable:当对象变为不可用或非激活状态时此函数被调用 .
OnDestroy:当游戏对象将被销毁时执行 .
注意 :
必须所有脚本的Awake方法均执行完毕后才会开始执行这些脚本中的Start方法,而各脚本的Awake方法的调用顺序是随机的。因此,对象的创建可在Awake方法中实现,而对象的获取可在Start方法中实现,保证调用先后次序。