Unity代码小知识2
Unity代码小知识2
必然事件含义
- 必然事件又叫脚本生命周期,是unity自身的一套脚本运行规则如下图:
- 图中所有函数都为必然事件(生命周期)的特定函数,他们都有自己特定的名称与调用时间。
- 图中所展示的也只是必然事件(生命周期)的一小部分,所有必然事件(生命周期)函数在API查询MonoBehaviour可见
常用的必然事件
-
开始阶段:
- Awake()函数:
- 执行时间:创建游戏对象时立即执行
- 作用:初始化
- Start()函数:
- 执行时间:创建游戏对象脚本时立即执行
- 作用:初始化
- Awake()函数:
-
物理阶段(运行阶段):
- FixedUpdate()函数:
- 执行时间:脚本启用后不受渲染影响固定时间执行
- 作用:适合对物体做物理操作(移动、旋转等)
- Update()函数:
- 执行时间:脚本启用后受渲染影响非固定时间执行
- 作用:处理程序逻辑(为了常常做些简单的物理操作)
- LateUpdate()函数:
- 执行时间:Update执行后立即执行
- 作用:处理程序跟随逻辑(为了常常做些简单的物理操作)
- 渲染频率受计算机硬件的影响
- FixedUpdate()函数:
-
其它常用必然事件:
-
输入事件:
- OnMouseEnter():当鼠标进入到GUIElement(GUI元素)或Collider(碰撞体)中时OnMouseEnter()被调用
- OnMouseExit():当鼠标不在GUIElement或Collider上时OnMouseExit()被调用
- OnMouseDown():当鼠标在GUIElement或Collider上点击时OnMouseDown()被调用
- OnMouseDrag(): 当鼠标在GUIElement或Collider上拖拽时OnMouseDrag()被调用
- OnMouseOver():当鼠标在GUIElement或Collider上经过时OnMouseOver()被调用
- OnMouseUp():
- 当鼠标在GUIElement或Collider上抬起时调用OnMouseUp()
- 在鼠标按下的同一GUIElement或Collider上,OnMouseUp()才调用[^1]
-
场景渲染:
- OnBecameInvisible():当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible()
- OnBecameVisible():当renderer(渲染器)在任何相机上可见时调用OnBecameVisible()
-
物理碰撞:
-
OnCollisionEnter(Collision):当此collider/rigidbody触发另一个rigidbody/collider时,调用。
-
OnCollisionExit(Collision):当此collider/rigidbody停止触发另一个rigidbody/collider时调用
-
OnCollisionStay(Collision):当此collider/rigidbody触发另一个rigidbody/collider的每帧调用
-
-
触发事件:
- OnTriggerEnter(Collider) :当Collider(碰撞体)进入trigger(触发器)时调用
- OnTriggerExit(Collider):当Collider(碰撞体)停止触发trigger(触发器)时调用
- OnTriggerStay(Collider):当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用
-
结束阶段:
- OnDisable() :当对象变为不可用或非**状态时此函数被调用
- OnDestroy() :当脚本销毁或附属对象被销毁时此函数被调用
- OnApplicationQuit() :在应用退出之前调用
-
初始化与必然事件的对比功能
- Awake()与Start()函数:
- 执行时间:Awake()早于Start()执行时间
- 作用:初始化(放在其他地方初始化可能出现异常报错)
- FixedUpdate()、Update()、LateUpdate()函数:
- 只有FixedUpadate()不受渲染影响
- LateUpdate()与Update()同帧执行
- Update()函数实现物理操作与跟随逻辑:
- 一般情况下:正常使用
- 复杂情况下:可能会出现微小偏差,导致穿模、跟随延迟等情况