简介: 常见的 untiy MonoBehaviour 方法有,Awake,Start,OnEnable,OnDisable,OnDestory,update,LateUpdate,FixedUpdate。最近在处理一个bug时,看到了一位已离职同事的代码时,看到一个作者不常见的OnValidate。趁此机会再复习一下各函数的调用吧。
unity版本: 2022.3.14f1c1
管线: URP
常见激活方法
这些方法,不会每帧都执行,只会在条件满足时触发一次。
- Awake:在物体初始化的时候执行一次,无论脚本是否激活
- Start:在脚本被激活并完成初始化时调用一次
- OnEnable:在物体激活时调用,每激活一次都会被调用,它的执行在 Start之前,但是 Start 只在第一次激活时调用,之后开关组件不会再调用
常见更新方法
- Update:常见的更新函数,每帧执行一次
- FixedUpdate:固定时间更新,一般用于物理计算的更新
- LateUpdate:每帧执行一次,但是实在其它更新函数执行完以后
- OnGUI:绘制GUI的更新函数
- OnDrawGizmos:绘制虚拟体的更新函数
常见失活方法
- OnApplicationQuite:程序退出时调用
- OnDisable:组件被关闭时调用,每次关闭都会调用。销毁物体时也会调用,OnApplicationQuit 时会同时被调用
- OnDestory:物体被销毁时调用,OnApplicationQuite 时会同时被调用
新认识的 OnValidate
下面的周期图里并没有 OnValidate 函数,这个函数是一个 Editor 下的函数,也就是说在打包的时候不会进入最终程序,它的触发条件是以下任意一个
- 当前组件的值有变化
- 在脚本加载的时候执行一次,注意这里,是程序加载时就会执行一次,也就是无论物体是否处于激活状态只要加载了,就会执行一次,这也是我这次遇到的bug,加载的物体虽然没激活,但是依然有逻辑运行了。T_T