Unity内置函数执行顺序介绍
官网那张生命周期的图是SVG,但是阿b不支持这个格式,我只好转个 PNG 来讲解了:

附2018版本文档链接
https://docs.unity3d.com/cn/2018.4/Manual/ExecutionOrder.html
但其实常用也就几个:
表示开始的函数
Awake():在场景开始的时候调用,仅调用一次,最早。
OnEnable():在脚本启用的时候调用,如果将其禁用再启用,会再次触发。
Start():在第一帧更新之前调用,仅调用一次。
以上这三个函数通常用于脚本的初始化什么的,默认执行顺序如上。
其中Awake会在一开始调用,一开始的意思是,哪怕挂载的脚本没有打勾,设置的 enable 是false,只要挂载物体可用,便会调用Awake函数。
OnEnable函数可能是会在游戏过程中多次调用的,只要你将其禁用再启用。
Start函数总是会在第一次调用OnEnable后调用,但是也只有一次。
和循环相关的函数
FixedUpdate():表示物理更新,每一帧间隔是固定的,由Unity模拟得来。
Update():实际更新,在每一个实际帧执行。
LateUpdate():在Update执行后调用,通常用作镜头移动,以确保画面正常。
只要脚本处于激活状态,那么这三个函数将会每秒调用几十次,不同的是,FixedUpdate默认每秒调用50次,这个数字可以在 Edit->ProjectSetting->Time->Fixed Timestep 中修改间隔来设置,需要说明的是,这个函数的执行是由Unity模拟而来,并不是实际的每一帧,如果将输入判断放置在这个函数中会出现失效的情况。
由于这个函数的执行间隔是固定的,因此我们通常将物理模拟以及一些时间判断的累加放在这个函数中,以获取更加精准的结果

而Update函数作为实际的每一帧,其执行的次数取决于当前电脑的配置以及正在进行的计算内容,当你的游戏正在执行一项密集计算时,一秒可能也就只有几帧,表示 Update 间隔的Time.deltaTime 变量也会相应变大。
至于 LateUpdate 函数,我目前而言只在跟随官方教程的3D项目中使用过(但是由于晕3D以及建模太麻烦了就没有做3D的),其主要就是更新跟随玩家的摄像机,以确保摄像机的视角不会穿模,不会拍到玩家的位置还没更新时候的情况。
结束的函数
常用的有3个
OnApplicationQuit():在程序退出的时候触发。
OnDisable():在脚本被禁用的时候触发。
OnDestroy():在脚本被移除的时候触发。
是的,触发的顺序就是程序退出—>禁用 —>移除。
程序退出没什么好说的,就是会在程序退出的时候调用。
OnDisable 则是和OnEnable 类似,在每一次脚本的激活状态改变时触发。
OnDestroy 函数,当你将脚本移除,或者脚本附加的对象被销毁的时候,触发。

更多的东西,大家可以参考官方的文档,这篇专栏就是简单介绍一下比较常用的一些函数啦。