1、简介
生命周期也叫消息机制
1.什么是生命周期函数: Unity 脚本从唤醒到销毁的过程。
过程:初始阶段 -> 物理阶段 -> 输入事件 -> 游戏逻辑 -> 场景渲染 -> 结束阶段
2.生命周期(也叫消息机制)什么时候执行:
当满足某种条件 Unity 引擎自动调用的函数。
如:物体载入时 Awake开始执行
3.生命周期的 函数名 为蓝色,所以要注意大小写的区分 不能输错!
2、初始阶段
Reset:当拖动脚本到组件栏的时候,还有物体被reset的时候会调用
void Reset()
{
Debug.Log("Reset");
}
Awake() 唤醒:脚本挂载在物体上,物体载入时立即调用一次且只执行一次,常用于游戏开始前进行初始化(无论当前组件是否启用)
void Awake()
{
Debug.Log("Awake");
}
OnEnable() 当可用:每当脚本对象启用时调用(可重复调用)。
void OnEnable()
{
Debug.Log("Enable");
}
Start() 开始:脚本挂载在物体上,物体载入且 脚本对象启用时被调1次。
常用于数据或游戏逻辑初始化,执行时机晚于Awake。
void Start () {
Debug.Log("Start");
}
3、物理阶段
1.FixedUpdate 固定更新:
执行时机:脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,跟物理相关的。
设置更新频率: “Edit”-->“Project Setting”-->“Time”--> “Fixed Timestep”值,默认为0.02s.
特性:不受渲染帧的影响,渲染时间固定,受时间缩放Time.timeScale的影响
void FixedUpdate()
{
Debug.Log("FixedUpdate");
}
2.OnCollisionXXX 碰撞:
执行条件:挂载脚本的对象必须有Rigidbody和Collider,且和另一个Collider物体发生接触
OnCollisionEnter:发生碰撞时触发一次
OnCollisionExit:退出碰撞是发生一次
OnCollisionStay:发生碰撞后每帧触发
当满足碰撞条件时调用。
3.OnTriggerXXX 触发:
当满足触发条件时调用。
4.OnControllerColliderHit(ControllerColliderHit hit) 角色控制器触发
4、输入事件
OnMouseEnter 鼠标移入:
鼠标移入到当前 Collider 时调用。
OnMouseOver 鼠标经过:
鼠标经过当前 Collider 时调用。
OnMouseExit 鼠标离开:
鼠标离开当前 Collider 时调用。
OnMouseDown 鼠标按下:
鼠标按下当前 Collider 时调用。
OnMouseUp 鼠标抬起:
鼠标在当前 Collider 上抬起时调用。
5、游戏逻辑(更新)
Update 更新:
// 实现时机:每帧(约0.02s)更新,受渲染帧影响
// 适用性:游戏的逻辑
// 特性:受渲染帧影响,机器性能越高,渲染帧间隔越短,时间不固定
脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关。
LateUpdate 延迟更新:
// 适用性:跟随的逻辑
// 特性:晚于Update
在 Update 函数被调用后执行,适用于跟随逻辑。
6、场景渲染
OnBecameVisible 当可见:
当 Mesh Renderer 在任何相机上可见时调用。
OnBecameInvisible 当不可见:
当 Mesh Renderer 在任何相机上都不可见时调用。
7、结束阶段
OnDisable 当不可用:
对象变为不可用或附属游戏对象非激活状态时此函数被调用。
OnDestroy 当销毁:
当脚本销毁或附属的游戏对象被销毁时被调用。
OnApplicationQuit 当程序结束:
应用程序退出时被调用。
作用:调试方式,将消息打印至控制台Console