版本:Unity 6 (6000.0)
语言英语
  • C#

MonoBehaviour

UnityEngine 中的类

/

继承自:Behaviour

/

实现于:UnityEngine.CoreModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

MonoBehaviour 是许多 Unity 脚本派生的基类。

MonoBehaviour 提供了生命周期函数,使使用 Unity 进行开发更加容易。

MonoBehaviours 始终作为 Component 存在于 GameObject 中,可以使用 GameObject.AddComponent 实例化。需要独立于 GameObject 存在的对象应从 ScriptableObject 派生。

可以使用 Object.DestroyObject.DestroyImmediate 删除 MonoBehaviour。当父 GameObject 被销毁时,所有组件都会自动删除,包括 MonoBehaviours。

底层组件销毁后,MonoBehaviour 的 C# 对象会保留在内存中,直到垃圾被收集。处于此状态的 MonoBehaviour 的行为就像为 null 一样。例如,它对“obj == null”检查返回 true。但是,此类不支持 空条件运算符 (?.) 和 空合并运算符 (??)。

当序列化 MonoBehaviour 时,C# 字段的值将根据 Unity 的序列化规则包含在内。有关详细信息,请参阅 脚本序列化。序列化数据还包括内部属性,例如对 MonoScript 的引用,该引用跟踪对象的实现类。

有关代码示例,请参阅各个 MonoBehaviour 方法。

注意: Unity 编辑器中有一个复选框用于启用或禁用 MonoBehaviour。取消选中时会禁用函数。如果脚本中不存在这些函数中的任何一个,则 Unity 编辑器不会显示复选框。这些函数是

开始()
更新()
固定更新()
延迟更新()
OnGUI()
OnDisable()
OnEnable()

其他资源:手册中的 停用游戏对象 页面。

属性

destroyCancellationToken销毁 MonoBehaviour 时引发的取消令牌(只读)。
didAwake返回一个布尔值,表示是否调用了 Awake。
didStart返回一个布尔值,表示是否调用了 Start。
runInEditMode允许 MonoBehaviour 的特定实例在编辑模式下运行(仅在编辑器中可用)。
useGUILayout禁用此选项可跳过 GUI 布局阶段。

公共方法

CancelInvoke取消此 MonoBehaviour 上的所有 Invoke 调用。
Invoke在 time 秒内调用 methodName 方法。
InvokeRepeating在 time 秒内调用 methodName 方法,然后每隔 repeatRate 秒重复一次。
IsInvokingmethodName 上的任何 invoke 是否正在等待?
StartCoroutine启动一个协程。
StopAllCoroutines停止此行为上运行的所有协程。
StopCoroutine停止此行为上运行的第一个名为 methodName 的协程,或存储在 routine 中的协程。

静态方法

print将消息记录到 Unity 控制台(与 Debug.Log 相同)。

消息

Awake当启用脚本实例时,Unity 会调用 Awake。
固定更新与帧率无关的 MonoBehaviour.FixedUpdate 消息,用于物理计算。
延迟更新如果 Behaviour 已启用,则 LateUpdate 每个帧都会被调用一次。
OnAnimatorIK用于设置动画 IK(逆运动学)的回调。
OnAnimatorMove用于处理动画移动以修改根运动的回调。
OnApplicationFocus当玩家获得或失去焦点时,发送给所有游戏对象。
OnApplicationPause当正在播放的应用程序在失去或重新获得焦点时暂停或恢复时,发送给所有游戏对象。
OnApplicationQuit在应用程序退出之前发送给所有游戏对象。
OnAudioFilterRead如果实现了 OnAudioFilterRead,Unity 将在音频 DSP 链中插入一个自定义滤波器。
OnBecameInvisible当渲染器不再被任何相机看到时,将调用 OnBecameInvisible。
OnBecameVisible当渲染器变得可见时,将调用 OnBecameVisible。
OnCollisionEnter当此碰撞器/刚体开始接触另一个刚体/碰撞器时,将调用 OnCollisionEnter。
OnCollisionEnter2D当传入的碰撞器与该对象的碰撞器接触时发送(仅限二维物理)。
OnCollisionExit当此碰撞器/刚体停止接触另一个刚体/碰撞器时,将调用 OnCollisionExit。
OnCollisionExit2D当另一个对象上的碰撞器停止接触该对象的碰撞器时发送(仅限二维物理)。
OnCollisionStay每帧调用一次,用于每个与另一个碰撞器或刚体接触的碰撞器或刚体。
OnCollisionStay2D每帧发送一次,当另一个对象上的碰撞器与该对象的碰撞器接触时(仅限二维物理)。
OnConnectedToServer当您成功连接到服务器时,在客户端调用。
OnControllerColliderHit当控制器在执行移动时撞击碰撞器时,将调用 OnControllerColliderHit。
OnDestroy销毁附加的行为将导致游戏或场景接收 OnDestroy。
OnDisable当行为被禁用时,将调用此函数。
OnDrawGizmos如果您想绘制也可拾取且始终绘制的 gizmos,请实现 OnDrawGizmos。
OnDrawGizmosSelected如果对象被选中,请实现 OnDrawGizmosSelected 以绘制 gizmo。
OnEnable当对象被启用并处于活动状态时,将调用此函数。
OnFailedToConnect当连接尝试由于某种原因失败时,在客户端调用。
OnGUIOnGUI 用于渲染和处理 GUI 事件。
OnJointBreak当连接到同一游戏对象的关节断裂时调用。
OnJointBreak2D当连接到同一游戏对象的 Joint2D 断裂时调用。
OnMouseDown当用户在碰撞器上按下鼠标左键时,将调用 OnMouseDown。
OnMouseDrag当用户单击碰撞器并仍然按住鼠标时,将调用 OnMouseDrag。
OnMouseEnter当鼠标进入碰撞器时调用。
OnMouseExit当鼠标不再位于碰撞器上时调用。
OnMouseOver每帧调用一次,只要鼠标在碰撞器上。
OnMouseUp当用户释放鼠标按钮时,将调用 OnMouseUp。
OnMouseUpAsButton仅当鼠标在与按下时相同的碰撞器上释放时,才会调用 OnMouseUpAsButton。
OnParticleCollision当粒子撞击碰撞器时,将调用 OnParticleCollision。
OnParticleSystemStopped当系统中的所有粒子都死亡且不再产生新粒子时,将调用 OnParticleSystemStopped。在调用 Stop 或非循环系统的持续时间属性超过时,新粒子将不再创建。
OnParticleTrigger当粒子系统中的任何粒子满足触发器模块中的条件时,将调用 OnParticleTrigger。
OnParticleUpdateJobScheduled当粒子系统的内置更新作业被安排时,将调用 OnParticleUpdateJobScheduled。
OnPostRenderUnity 在相机渲染场景后调用的事件函数。
OnPreCullUnity 在相机剔除场景之前调用的事件函数。
OnPreRenderUnity 在相机渲染场景之前调用的事件函数。
OnRenderImageUnity 在相机完成渲染后调用的事件函数,允许您修改相机的最终图像。
OnRenderObject在相机渲染完场景后调用 OnRenderObject。
OnServerInitialized每当调用 Network.InitializeServer 并完成时,在服务器上调用。
OnTransformChildrenChanged当游戏对象的变换的子级列表发生变化时,将调用此函数。
OnTransformParentChanged当游戏对象的变换的直接或间接父级发生变化时,将调用此函数。
OnTriggerEnter当一个游戏对象与另一个游戏对象碰撞时,Unity 会调用 OnTriggerEnter。
OnTriggerEnter2D当另一个对象进入附加到该对象的触发碰撞器时发送(仅限二维物理)。
OnTriggerExit当碰撞器 other 停止接触触发器时,将调用 OnTriggerExit。
OnTriggerExit2D当另一个对象离开附加到该对象的触发碰撞器时发送(仅限二维物理)。
OnTriggerStay每帧物理更新调用一次,用于每个与触发器接触的碰撞器 other。
OnTriggerStay2D当另一个对象位于附加到该对象的触发碰撞器中时,每帧物理更新发送一次(仅限二维物理)。
OnValidate当加载脚本或检查器中的值发生变化时,Unity 会调用的仅编辑器函数。
OnWillRenderObject如果对象可见且不是 UI 元素,则会针对每个相机调用 OnWillRenderObject。
重置重置为默认值。
开始当脚本在第一次调用任何 Update 方法之前被启用时,Start 会在该帧上调用。
更新如果 MonoBehaviour 已启用,则 Update 每帧都会被调用一次。

继承的成员

属性

enabled启用的行为会更新,禁用的行为不会更新。
isActiveAndEnabled报告游戏对象及其关联的行为是否处于活动状态并已启用。
gameObject此组件所附加的游戏对象。组件始终附加到游戏对象。
tag此游戏对象的标签。
transform附加到此游戏对象的变换。
hideFlags对象是否应隐藏、与场景一起保存或可由用户修改?
name对象的名称。

公共方法

BroadcastMessage在该游戏对象或其任何子级中的每个 MonoBehaviour 上调用名为 methodName 的方法。
CompareTag将游戏对象的标签与定义的标签进行比较。
GetComponent获取指定组件相同游戏对象上类型为 T 的组件的引用。
GetComponentInChildren获取指定组件相同游戏对象或游戏对象的任何子级上类型为 T 的组件的引用。
GetComponentIndex获取组件在其父游戏对象上的索引。
GetComponentInParent获取指定组件相同游戏对象或游戏对象的任何父级上类型为 T 的组件的引用。
GetComponents获取指定组件相同游戏对象上类型为 T 的所有组件的引用。
GetComponentsInChildren获取指定组件相同游戏对象及其任何子级上类型为 T 的所有组件的引用。
GetComponentsInParent获取与指定组件位于同一游戏对象上的所有类型为 T 的组件的引用,以及游戏对象的任何父级。
SendMessage在该游戏对象中的每个 MonoBehaviour 上调用名为 methodName 的方法。
SendMessageUpwards在该游戏对象中的每个 MonoBehaviour 上以及在该行为的每个祖先上调用名为 methodName 的方法。
TryGetComponent获取指定类型的组件,如果存在。
GetInstanceID获取对象的实例 ID。
ToString返回对象的名称。

静态方法

Destroy删除游戏对象、组件或资产。
DestroyImmediate立即销毁对象 obj。强烈建议使用 Destroy 代替。
DontDestroyOnLoad在加载新场景时不要销毁目标对象。
FindAnyObjectByType检索任何活动的已加载类型为 type 的对象。
FindFirstObjectByType检索第一个活动的已加载类型为 type 的对象。
FindObjectsByType检索所有已加载类型为 type 的对象的列表。
Instantiate克隆对象 original 并返回克隆。
InstantiateAsync捕获原始对象(必须与某些游戏对象相关联)的快照,并返回 AsyncInstantiateOperation。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用,查看它们是否引用同一个对象。