首先,咱们有必要说明一下他们的执行顺序:安全
awake--start--update--fixedupdate--lateupdate--OnGUI--reset--onDisable--onDestory函数
Awake用于在游戏开始以前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在全部对象被初始化以后调用,因此你能够安全的与其余对象对话或用诸如GameObject.FindWithTag()这样的函数搜索它们。每一个游戏物体上的Awake以随机的顺序被调用。所以,你应该用Awake来设置脚本间的引用,并用Start来传递信息Awake老是在Start以前被调用。它不能用来执行协同程序。spa
Start仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。它和Awake的不一样是Start只在脚本实例被启用时调用。你能够按需调整延迟初始化代码。Awake老是在Start以前执行。这容许你协调初始化顺序。在全部脚本实例中,Start函数老是在Awake函数以后调用。orm
fixupdate每一帧都执行,处理Rigidbody时,须要用FixedUpdate代替Update。例如:给刚体加一个做用力时,你必须应用做用力在FixedUpdate里的固定帧,而不是Update中的帧。(二者帧长不一样)FixedUpdate,每固定帧绘制时执行一次,和update不一样的是FixedUpdate是渲染帧执行,若是你的渲染效率低下的时候FixedUpdate调用次数就会跟着降低。FixedUpdate比较适用于物理引擎的计算,由于是跟每帧渲染有关。Update就比较适合作控制。对象
LateUpdate是在全部Update函数调用后被调用,和fixedupdate同样都是每一帧都被调用执行,这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机能够在LateUpdate里实现。LateUpdate,在每帧执行完毕调用,他是在全部update结束后才掉,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在全部update操做完才跟进摄像机,否则就有可能出现摄像机已经推动了,可是视角里还未有角色的空帧出现。生命周期
OnGUI是在渲染和处理GUI事件时调用。好比:你画一个button或label时经常用到它。这意味着OnGUI也是每帧执行一次。游戏
Reset是在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。Reset最经常使用于在检视面板中给定一个最经常使用的默认值。事件
当物体被销毁时 OnDisable将被调用,而且可用于任意清理代码。脚本被卸载时,OnDisable将被调用,OnEnable在脚本被载入后调用。注意: OnDisable不能用于协同程序。ci
当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy只会在预先已经被激活的游戏物体上被调用。注意:OnDestroy也不能用于协同程序。it