Unity的生命周期
Unity的生命周期
场景开始前调用,用于加载场景(场景中每个对象调用一次)
在为任何对象调用 Start 和 Update 等函数之前,会为所有脚本调用 Awake 和 OnEnable 函数。在游戏运行过程中实例化对象时,不能强制执行此调用。
- Awake: 早于Start,常用于在游戏开始之前初始化变量或游戏状态(只调用一次)
- OnEnable: 当对象变为可用或激活状态时调用(可多次调用)
Start: 仅当启用脚本实例后,在第一次帧更新之前(Update前)调用,常用于数据或逻辑对象初始化(只调用一次),在游戏运行过程中实例化对象时,不能强制执行此调用。
FixedUpdate: 根据物理帧利用固定间隔计时器(独立于帧率)进行所有物理计算和更新
OnTrigger: 触发器被触发时调用;OnCollision: 产生碰撞事件时调用
yield WaitForFixedUpdate:所有脚本上调用所有 FixedUpdate 后继续,作为卡点,在物理帧结束至此点再开始执行后续代码
OnMouse:输入
Update: 每帧调用
LateUpdate: 每帧Update方法调用后调用,常见用途是跟随第三人称摄像机
一堆渲染函数(有关状态机)
OnGUI: 渲染用户界面,然后为每个输入事件处理布局和键盘/鼠标事件
yield WaitForEndOfFrame:**当前帧彻底结束后会执行此协程
OnApplicationPause: 应用暂停时在帧结尾处调用,并发出一个额外帧,从而允许游戏显示图形来指示暂停状态,取消暂停后从FixedUpdate开始重新执行
在场景中的所有活动对象上调用以下函数
- OnApplicationQuit: 应用退出前在所有对象上调用,可以用于保存退出前的信息
- OnDisable: 行为被禁用或处于非活动状态时调用
OnDestroy: 物体被销毁时,即存在的最后一帧完成所有帧更新之后调用,一般用于清理内存

yield函数都是协程,在Update返回后更新。
协程是一种编写异步代码的方法,其中包括等待一定时间或某些操作完成,同时允许其他代码继续执行。它允许程序在单线程内实现多个独立的执行线程(协程),这些线程可以非阻塞地挂起和恢复,以实现协作式多任务处理。协程的核心思想是让程序员能够控制执行的流程,而不是完全交给操作系统或线程调度器来控制。


