Unity生命周期的自我理解

首先是ReSet相比于其他函数较特殊 只在编辑模式下调用且只调用一次 在用户点Inspector面板下的Reset按钮时或第一次添加组件时调用

Awake 该函数中进行游戏对象的初始化 例如GameObject.FInd GameObject.FindWithTag Awake函数游戏运行之后第一个执行且执行一次 生命周期执行完一次后直接跳到OnEnable 不走Awake 如果要程序运行之后要禁用脚本 在Awake脚本中写this.enable=false 只执行到Enable函数 不进行以下生命周期函数的执行

Enable 该函数中判断当前脚本状态是否可继续执行 如果enable=true继续执行 enable=false不可执行 但可以在其他脚本将enable=true继续往下执行

Start 该函数在生命周期中也是只执行一次 其中可以由自己调整初始化代码顺序 假如Enable为false时在别的脚本中设置为true 也就是说该脚本可以继续执行了 生命周期要重新到Enable函数 走到Start时要判断Start函数是否执行过 执行过就不再执行 比如初始化主角位置为0 生命周期执行完一次之后主角位置改变了 则不能再次进入Start函数将主角位置初始化

FixedUpdate 固定帧更新 常常做一些物理行为的方法 比如刚体加力 发子弹时 就将作用力用在该函数的固定帧中

Update 该函数在每一帧都被调用 用于更新逻辑

Update结束后检测协同程序 任何一个协程都有等待的秒数返回null或是开启协程的时间 在IEnumerator中执行逻辑

LateUpdate 该函数也是每帧调用 是所有Update中最后执行的一个 跟随物体的相机逻辑可写在该函数

OnGUI 渲染图形界面

OnDIsable 当enable为false时执行该函数 可用于清理代码 执行到该函数时 脚本不会销毁

OnDestroy 当手动销毁游戏对象或游戏对象被销毁时 调用该函数 当前生命周期结束

生命周期的循环执行 各种物体才能动起来

下一帧执行操作怎么处理 开启协程 协程和Update一样 每帧都会执行 协程是当条件满足时执行 且当协程条件满足之后 Update函数将停止执行 由协程执行下一帧的逻辑 下一帧执行可用yield return null 等待下一帧执行 到达这一帧时暂停 下一帧从这儿开始执行

下一个FixedUpdate执行操作怎么操作 yield return FixedUpdate 等待处理物理逻辑的固定帧周期循环结束后执行 就是等待一次物理引擎的更新

当前帧最后执行操作怎么处理  yield return new WaitForEndOfFrame 等到相机和gui相机渲染后执行 就是等到这帧的末尾再执行 但仍然是当前帧 就是在下一帧开始前

ugui在ongui中执行 ongui首先处理布局和重绘 然后处理各种事件

你可能感兴趣的:(Unity生命周期的自我理解)