Unity 脚本的生命周期

简介: Unity 脚本的生命周期

脚本的生命周期(MonoBehaviour Lifecycle)是Unity官方给出的术语。实际上我们可以简单地将它理解为,一个脚本的创建和销毁两个关键事件,以及在此过程中可能触发的各种事件。这里最关心的是所有事件的种类,以及它们的触发事件,因为脚本逻辑只有写在合适的事件里,且在合适的时机执行,在能恰到好处实现想要的功能。


理解脚本的生命周期

首先要确认,脚本虽然功能强大,但它毕竟是Unity的众多系统之一,完全受到引擎的管理。在脚本中可以编写各种功能,但什么时候脚本会被调用,完全由Unity决定。

以熟悉的Start方法和Update方法为例。当在组件脚本中写下Update方法时,就意味着向引擎"注册"了更新事件。当引擎对所有组件执行更新操作时,也会稍带着这个脚本组件。反过来说,如果没有定义Update方法,那么引擎在更新时,就会跳过这个脚本。

可以把引擎每一帧需要做的事,想象成在标准跑道上跑一圈。在跑一圈的过程中会有很多项常规工作,也有一些突发事件需要处理。引擎允许脚本订阅它所挂载物体的各类事件,并运行相应方法。这些事件的种类众多,大体上包括了初始化、物理计算、更新、渲染和析构等方面。

常见的事件方法

事件

说明

Awake

脚本被加载后调用,时机早于Start

Start

脚本可用的第一帧,正好在第一次Update之前调用

Update

每帧调用

LateUpdate

每帧调用,保证在所有的Update执行过后才执行

FixedUpdate

物理更新,会尽可能保证调用频率

OnCollisionEnter

碰撞开始事件

OnCollisionStay

碰撞持续中

OncollisionExit

结束碰撞

OnTriggerEnter

触发器开始事件

OnTriggerStay

触发持续

OnTriggerExit

触发器结束事件

OnParticleCollision

粒子碰撞时间,Unity的粒子系统也支持物理特性

OnParticleSystemStopped

粒子系统结束

OnParticleTrigger

粒子触发器事件

OnGUI

渲染与处理GUI事件时调用

OnEnable

物体被激活时调用

OnDisable

物体被禁用时调用

OnDestroy

销毁组件时调用

OnPreRender

即将渲染事件,某个摄像机渲染场景时调用

OnRenderObject

渲染事件,某个摄像机渲染场景时调用

OnPostRender

渲染事件后,某个摄像机结束渲染时调用

OnWillRenderObject

每个摄像机渲染非UI的可见物体时调用

OnPreCull

摄像机进行可见性裁剪之前使用

OnTransformChildrenChanged

物体的子物体发生变化时调用

OnTransformParentChanged

物体的父物体发生变化时调用

OnApplicationFocus

Game窗口失去或获得焦点时调用

OnApplicationPause

游戏被暂停时调用

OnApplicationQuit

游戏退出时调用

OnBecameVisible

物体变得可见时调用

OnBecameInvisible

物体变得不可见时调用

OnMouseDown

鼠标在UI元或碰撞体上摁下时调用

OnMouseDrag

鼠标在UI元或碰撞体上持续摁下时调用

OnMouseEnter

鼠标进入UI元素或碰撞体范围时调用

OnMouseExit

鼠标离开UI元素或碰撞体范围时调用

OnMouseOver

鼠标在UI元素u或碰撞体范围内时,每帧调用

OnMouseUp

用户放开鼠标键时调用

OnMouseUpAsButton

用户在同一个UI元素或碰撞体上,松开鼠标按键时调用

 


相关文章
|
2月前
|
存储 人工智能 Java
Unity优化——脚本优化策略4
Unity优化——脚本优化策略4
|
20天前
|
人工智能 图形学
【unity小技巧】使用动画状态机脚本实现一个简单3d敌人AI功能
【unity小技巧】使用动画状态机脚本实现一个简单3d敌人AI功能
14 0
|
20天前
|
人工智能 定位技术 图形学
【Unity小技巧】一个脚本实现控制3D远程/近战敌人AI
【Unity小技巧】一个脚本实现控制3D远程/近战敌人AI
17 0
|
20天前
|
自然语言处理 图形学
【unity实战】一个通用的FPS枪支不同武器射击控制脚本
【unity实战】一个通用的FPS枪支不同武器射击控制脚本
16 0
|
28天前
|
程序员 图形学 Android开发
Unity脚本生命周期
Unity脚本生命周期
|
2月前
|
存储 人工智能 缓存
Unity优化——脚本优化策略3
Unity优化——脚本优化策略3
|
2月前
|
存储 缓存 Java
Unity优化——脚本优化策略2
Unity优化——脚本优化策略2
|
2月前
|
存储 XML 缓存
Unity优化——脚本优化策略1
Unity优化——脚本优化策略1
|
2月前
|
API C# 图形学
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
【Unity 3D】常见API的讲解以及在C#脚本中的执行(附源码)
103 1
|
7月前
|
人工智能 算法 BI
Unity——脚本与导航系统
Unity——脚本与导航系统