MonoBehaviour继承类及其重要方法

本文介绍了Unity3d中MonoBehaviour类的重要事件响应函数,包括OnApplicationFocus、OnApplicationPause、OnApplicationQuit等,详细阐述了在游戏物体交互过程中如何利用这些函数实现特定行为。此外,还提到了碰撞和触发器相关的回调函数,如OnCollisionEnter、OnTriggerEnter等,用于处理游戏中的碰撞检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MonoBehaviour概述

MonoBehaviour 表示一个单一的行为。Unity中用户对游戏对象的操作被分割成若干个单一行为。每个单一行为都作为一个MonoBehaviour类来封装。再生成每个MonoBehaviour类的实例,并作为组件嵌入游戏对象。然后按照一定的顺序(从下到上)调用每个对象的重载方法来实现游戏对象的全部行为。

用过Unity的伙伴们都知道,在创建脚本以后,文件里面默认有两个函数,Update()、Start(),这些函数是如何调用的呢,MonoBehaviour类下还有哪些类似的函数呢,我们了解一下:

首先看一下,常用的脚本必然事件。
一:基础函数
1.Update() MonoBehaviour启用时,每帧调用一次。用于更新场景和状态(物理状态有关的更新应该放在FixedUpdate里)
2.Start() Update函数第一次运行之前调用。用于游戏对象的初始化。整个Start方法在整个MonoBehaviour生命周期内只被调用一次。Awake和Start不同的地方在于Start方法仅仅在脚本初始化后被调用,这样允许你延迟加载任何代码,知道代码被真正使用时,Awake方法总是在Start方法之前被调用,这样允许你初始化脚本代码。
3.Awake() 脚本实例被创建时调用,用于游戏对象的初始化,但执行时间早于Start函数。当脚本被加载后后立即调用Awake方法,这个方法在Start()开始之前声明某些变量或者游戏的状态标记符。同样,Awake也是在MonoBehaviour声明周期内被调用一次。Awake在所有的对象实例化后被调用【本人认为是GameObject】,因此绑定这个脚本的对象能与其他直接相互作用,例如,通过GameFindWithTag方法查找其它对象。
4.FixedUpdate() 用于物理状态的更新。  每一帧都在调用此方法。当处理Rigibody时FixedUpdate应该代替Update方法,比如,当一个物体需要增加一个力时,应该将这个力的代码写在FixedUpdate()里面。
void FixedUpdate()
{
  rigibody.AddForce(Vector3.up);
}
5.LateUpdate() 每帧调用一次该方法,(在Update之后调用)。当每一帧的Update方法全部执行完后,此方法开始被调用。举个例子来说吧,当一个角色移动而摄像机也要跟着移动时,摄像机的处理就应该在LateUpdate()里面了。
       6.OnGUI   OnGUI()在每一帧被调用数次(Several times),家兔MonoBehaviour的enable属性设置为false时,OnGUI()就失去作用了。
       7.DontDestroyOnLoad()  进如另一个场景时,保证绑定此脚本的对象的内存不被释放掉。也就是说绑定此脚本的GameObject在下一个场景中依然存在。
二:事件响应函数
OnMouseOver 鼠标移入GUI空间或者碰撞体时调用
OnMouseEnter 鼠标停留在GUI控件或者碰撞体时调用
OnMouseExit 鼠标移出 GUI控件或者碰撞体时调用
OnMouseDown 鼠标在 GUI控件或者碰撞体上按下时调用
OnMouseUp 鼠标按键释放时调用
OnTriggerEnter 当其他碰撞体进入触发器时调用
OnTriggerExit 当其他碰撞体离开触发器时调用
OnTriggerStay 当其他碰撞体停留在触发器时调用
OnCollisionEnter当碰撞体与刚体与其他碰撞体或刚体接触时调用
OnCollisionExit 当碰撞体与刚体与其他碰撞体或刚体停止接触时调用
OnCollisionStay 当碰撞体与刚体与其他碰撞体或刚体保持接触时调用
OnControllerColliderHit当控制器移动时与碰撞体发生碰撞时调用
OnBecomeVisible 当任意一个相机可见时调用
OnBecomeInvisible 当任意一个相机不可见时调用
OnEnable 对象启用或者激活时调用
OnDisable 对象禁用或者取消激活时调用
OnDestroy脚本销毁时调用
OnGUI 渲染GUI和处理GUI时调用。


MonoBehaviour中的事件响应函数都是已On开头的,比如:鼠标事件,脚本激活、销毁,碰撞等

OnApplicationFocus:当玩家获得或失去焦点时发送给所有游戏物体。可以作为协同程序,在函数中使用yield语句即可

OnApplicationPause:当玩家暂停时发送到所有的游戏物体。可以作为协同程序,在函数中使用yield语句即可。

OnApplicationQuit:在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。

OnBecameInvisible:当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。

OnBecameVisible:当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。

OnCollisionEnter:当此collider/rigidbody与另一个rigidbody/collider接触时调用。

OnCollisionExit:当此collider/rigidbody停止触发另一个rigidbody/collider时。

OnCollisionStay:当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。

OnConnectedToServer:当你成功连接到服务器时,在客户端调用。

OnDisconnectedFromServer:失去连接或从服务器端断开时在客户端调用。

OnFailedToConnectToMasterServer:当连接主服务器出现问题时在客户端或服务器端调用。

OnControllerColliderHit:在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。

OnDestroy:脚本销毁时调用。

OnDisable:对象禁用或者取消激活时调用。

OnEnable:对象变为可用或激活状态时此函数被调用。

OnDrawGizmosSelected:如果想在物体被选中时绘制gizmos,执行这个函数。

OnGUI:渲染和处理GUI事件时调用。

OnJointBreak:当附在同一对象上的关节被断开时调用。

OnLevelWasLoaded:一个新关卡被载入时此函数被调用。

OnMouseDown、OnMouseDrag、OnMouseEnter、OnMouseExit、OnMouseOver、OnMouseUp:鼠标事件。

OnMouseUpAsButton:只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。

OnTriggerEnter:当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。

OnTriggerExit:当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。

OnTriggerStay:当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。





















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值