🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **MonoBehaviour** 继承关系:MonoBehaviour》 Behaviour类》Component类》Object类 MonoBehaviour是一个基类,所有Unity脚本都派生自该类。 使用C#时,必须显式从MonoBehaviour派生。使用UnityScript (一种JavaScript)时,则不必从MonoBehaviour显式派生。 >[danger]注意: Unity Editor中有一个用于禁用MonoBehaviour的复选框。如果取消选中该复选框,则禁用其相关函数。如果脚本中不存在以下任一函数, Editor将不显示该复选框: Start() Update() FixedUpdate() LateUpdate() OnGU() OnDisable() OnEnable() ## **停用游戏对象** 可以通过将游戏对象标记为非活动来暂时从场景中移除此用脚本的**GameObject**.[activeSelf](https://docs.unity3d.com/ScriptReference/GameObject-activeSelf.html)属性\(通过**GameObject**.[SetActive](https://docs.unity3d.com/ScriptReference/GameObject.SetActive.html)\)或者使用Inspector中的激活复选框来即取消**游戏对象**的名称左边的复选框(见下图)。 ![](https://img.kancloud.cn/f9/f9/f9f91fa90d815a529df5b20566dbd0ad_327x103.png) ## **停用父GameObject** 停用父对象时,停用也会覆盖其所有子对象上的activeSelf设置,因此父级的整个层级视图将变为非活动状态。请注意,这不会更改子对象上activeSelf属性的值(即只要父对象为非活动状态子对象的**GameObject.activeSelf**为**true** 子对象也是非活跃状态的),因此一旦重新激活父对象,子对象将恢复到其原始状态。这意味着无法通过读取activeSelf属性来确定子对象当前是否在场景中处于活动状态。而应该使用**GameObject**.[activeInHierarchy](https://docs.unity3d.com/ScriptReference/GameObject-activeInHierarchy.html)属性,该属性将考虑父对象的覆盖效果。 在Unity 4.0中,已引入此覆盖行为。在早期版本中,有一个称为**SetActiveRecursively**的函数可用于激活或停用给定父对象的子项。但是,此函数的工作方式不同:每个子对象的激活设置都已更改-可以关闭和打开整个层级视图,但是子对象无法"记住”自己最初所处的状态。为了避免破坏旧版代码, SetActiveRecursively已保留在4.0的API中,但不建议予以使用,而且将来可能会将其移除(2018版本已被移除,可能更早未测试)。 在实际希望更改子游戏对象而不是父对象的**activeSelf**设置(极少情况下),可以使用如下代码: ~~~ void DeactivateChildren(GameObject g, bool a) { g.activeSelf = a; foreach (Transform child in g.transform) { DeactivateChildren(child.gameObject, a); } } ~~~ ## **Properties** | | | | --- | --- | | [runInEditMode](https://docs.unity3d.com/ScriptReference/MonoBehaviour-runInEditMode.html)| 允许MonoBehaviour的特定实例在编辑模式下运行(仅可在Editor中使用) | | [useGUILayout](https://docs.unity3d.com/ScriptReference/MonoBehaviour-useGUILayout.html)| 禁用该属性可跳过GUI布局阶段。 | ## **Public Methods** | | | | --- | --- | | [CancelInvoke](https://docs.unity3d.com/ScriptReference/MonoBehaviour.CancelInvoke.html)| 取消该MonoBehaviour上的所有Invoke调用。 | | [Invoke](https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html)| 在秒后调用方法 | | [InvokeRepeating](https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html)| 在秒后调用方法,然后每秒调用一次。 | |[IsInvoking](https://docs.unity3d.com/ScriptReference/MonoBehaviour.IsInvoking.html)| | | [StartCoroutine](https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html)| 是否有任何待处理的调用?Isinvoking启动一个协同程序。 | | [StopAllCoroutines](https://docs.unity3d.com/ScriptReference/MonoBehaviour.StopAllCoroutines.html)| 停止在该行为上运行的所有协同程序 | | [StopCoroutine](https://docs.unity3d.com/ScriptReference/MonoBehaviour.StopCoroutine.html)| 停止在该行为上运行的第一个名为的协同程序或存储在中的协同程序。 | ## **Static Methods** | | | | --- | --- | | print | 将消息记录到Unity控制台(与DebugLog相同 | ## Messages | | | | --- | --- | | [Awake](https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html) | Awake在加载脚本实例时调用。 | | [FixedUpdate](https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html) | 如果启用了MonoBehaviour,则每个固定帧率帧调用该函数。 | | [LateUpdate](https://docs.unity3d.com/ScriptReference/MonoBehaviour.LateUpdate.html) | 如果启用了Behaviour,则每帧调用LateUpdate. | | [OnAnimatorIK](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAnimatorIK.html) | 用于设置动画IK (反向运动学)的回调。 | | [OnAnimatorMove](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAnimatorMove.html) | 用于处理动画移动以修改根运动的回调。 | | [OnApplicationFocus](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationFocus.html) | 当玩家获得或失去焦点时,发送给所有GameObject. | | [OnApplicationPause](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationPause.html) | 程暂停,送所有GameObject. | | [OnApplicationQuit](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationQuit.html) | 在应用程序退出前,发送给所有游戏对象。 | | [OnAudioFilterRead](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAudioFilterRead.html) |如果实现了OnAudioFilterRead, Unity将在音频DSP链中插入一个自定义滤波 | | [OnBecameInvisible](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnBecameInvisible.html) | OnBecamelnvisible在渲染对任何摄像机都不可见时调用。 | | [OnBecameVisible](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnBecameVisible.html) | OnBecameVisible在渲染变为对任意摄像机可见时调用。 | | [OnCollisionEnter](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter.html) | 当该碰撞体/刚体已开始接触另一个刚体/碰撞体时,调用OnCollisionEnter. | | [OnCollisionEnter2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html) | 当传入碰撞体与该对象的碰撞体接触时发送(仅限2D物理) | | [OnCollisionExit](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionExit.html) | 当该碰撞体/刚体已停止接触另一个刚体/碰撞体时,调用OnCollisionExit. | | [OnCollisionExit2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionExit2D.html) | 当另一个对象上的碰撞体停止接触该对象的碰撞体时发送(仅限2D物理) | | [OnCollisionStay](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionStay.html) | 对应正在接触刚体/碰撞体的每一个碰撞体/刚体,每帧调用一次:ref::OnCollisionStay | | [OnCollisionStay2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionStay2D.html) | 在另一个对象上的碰撞体正在接触该对象的碰撞体时发送每个帧(仅限2D物理) | | [OnConnectedToServer](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnConnectedToServer.html) | 成功连接到服务后在客户端上调用。 | | [OnControllerColliderHit](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnControllerColliderHit.html) | 当该控制在执行Move时撞到碰撞体时调用OnControllerColliderHit. | | [OnDestroy](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDestroy.html) | 销毁附加的行为将导致游戏或场景收到OnDestroy. | | [OnDisable](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDisable.html) | 该函数在行为被禁用时调用。 | | [OnDisconnectedFromServer](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDisconnectedFromServer.html) | 当连接丢失或与服务断开连接时,在客户端上调用。 | | [OnDrawGizmos](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDrawGizmos.html) | 如果您想绘制能够选择并且始终绘制的辅助图标,则可以实现OnDrawGizmos. | | [OnDrawGizmosSelected](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnDrawGizmosSelected.html) | 如果选择了对象,则实现OnDrawGizmosSelected来绘制辅助图标。 | | [OnEnable](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnEnable.html) | 该函数在对象变为启用和激活状态时调用。 | | [OnFailedToConnect](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnFailedToConnect.html) | 出于某种原因连接尝试失败时,在客户端上调用。 | | [OnFailedToConnectToMasterServer](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnFailedToConnectToMasterServer.html) | 在连接到MasterServer时发生问题的情况下,在客户端或服务上调用。 | | [OnGUI](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnGUI.html) | 系统调用OnGUI来渲染和处理GUI事件。 | | [OnJointBreak](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnJointBreak.html) | 在附加到相同游戏对象的关节断开时调用。 | | [OnJointBreak2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnJointBreak2D.html) | 在附加到相同游戏对象的Joint2D断开时调用。 | | [OnMasterServerEvent](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMasterServerEvent.html) | 在从MasterServer报告事件时,在客户端或服务上调用。 | | [OnMouseDown](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDown.html) | 当用户在GUElement或Collider上按下鼠标按钮时,将调用OnMouseDown | | [OnMouseDrag](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseDrag.html) | 当用户单击GUElement或Collider并仍然按住鼠标时,将调用OnMouseDrag | | [OnMouseEnter](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseEnter.html) | 当鼠标进入GUElement或Collider时调用。 | | [OnMouseExit](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseExit.html) | 当鼠标悬停在GUElement或Collider上时,每帧调用一次。 | | [OnMouseOver](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseOver.html) | 当鼠标悬停在GUElement或Collider上时,每帧调用一次。 | | [OnMouseUp](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseUp.html) |当用户松开鼠标按钮时,将调用OnMouseUp. | | [OnMouseUpAsButton](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseUpAsButton.html) | 松开鼠标时,仅当鼠标在按下时所在的GUIElement或Collider上时,才调用OnMouseUpAsButton. | | [OnNetworkInstantiate](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnNetworkInstantiate.html) | 当粒子击中碰撞体时,将调用OnParticleCollision. | | [OnParticleCollision](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleCollision.html) | 当粒子击中碰撞体时,将调用OnParticleCollision. | | [OnParticleSystemStopped(新2019)](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleSystemStopped.html) | OnParticleSystemStopped是在系统中的所有粒子都已死亡,且没有新粒子生成时调用的。新的粒子会在停止后停止生成,或者当非循环系统的持续时间属性被超过时停止生成。 | | [OnParticleTrigger](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnParticleTrigger.html) | 当粒子系统中的任何粒子满足触发模块中的条件时,将调用OnParticleTrigger. | | [OnPlayerConnected](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPlayerConnected.html) | 每当有新玩家成功连接,就在服务上调用。 | | [OnPlayerDisconnected](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPlayerDisconnected.html) | 每当有玩家与服务断开连接,就在服务上调用。 | | [OnPostRender](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPostRender.html) | 在摄像机完成场景渲染后,将调用OnPostRender. | | [OnPreCull](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPreCull.html) | | | [OnPreRender](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPreRender.html) | OnPreCull在摄像机剔除场景前调用 | | [OnRenderImage](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnRenderImage.html) | OnRenderimage在图像的所有渲染操作全部完成后调用。 | | [OnRenderObject](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnRenderObject.html) | OnRenderObject在摄像机渲染场景后调用。 | | [OnSerializeNetworkView](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnSerializeNetworkView.html) | 用于在网络视图监视的脚本中自定义变量同步。 | | [OnServerInitialized](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnServerInitialized.html) | 每当调用Network.nitializeServer并且完成时,对该服务调用该函数。 | | [OnTransformChildrenChanged](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTransformChildrenChanged.html) | 当GameObject的变换的子项列表发生更改时,将调用该函数。 | | [OnTransformParentChanged](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTransformParentChanged.html) |当GameObject的变换的父属性发生更改时,将调用该函数。 | | [OnTriggerEnter](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html) | 当 Collider 件进入该触发时调用OnTriggerEnter. | | [OnTriggerEnter2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter2D.html) | 当另一个对象进入附加到该对象的触发碰撞体时发送(仅限2D物理) | | [OnTriggerExit](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerExit.html) | 当Collider 已停止接触该触发时调用OnTriggerExit. | | [OnTriggerExit2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerExit2D.html) | 当另一个对象离开附加到该对象的触发碰撞体时发送(仅限2D物理) | | [OnTriggerStay](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerStay.html) | 对于接触触发的每一个Collider /other/,每次物理更新调用一次OnTriggerStay | | [OnTriggerStay2D](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerStay2D.html) | 在另一个对象位于附加到该对象的触发碰撞体之内时发送每个帧(仅限2D物理) | | [OnValidate](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnValidate.html) | 加载脚本后或Inspector中的值发生更改时,将调用该函数(只能在Editor中调用)。 | | [OnWillRenderObject](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnWillRenderObject.html) | 如果对象可见并且不是UI元素,则为每摄像机调用OnWillRenderObject. | | [Reset](https://docs.unity3d.com/ScriptReference/MonoBehaviour.Reset.html) | 重置为默认值。 | | [Start](https://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html) | 在首次调用任何Update方法之前启用脚本时,在帧上调用Start | | [Update](https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html) | 如果启用了MonoBehaviour,则每帧调用Update. | # Inherited Members(废弃) ## Properties | 废弃的属性 | | | --- | --- | | [enabled](https://docs.unity3d.com/ScriptReference/Behaviour-enabled.html) | 启用的Behaviour可更新,禁用的Behaviour不可更新。 | | [isActiveAndEnabled](https://docs.unity3d.com/ScriptReference/Behaviour-isActiveAndEnabled.html) | 已调用启用的Behaviour. | | [gameObject](https://docs.unity3d.com/ScriptReference/Component-gameObject.html) | 此组件附加到的游戏对象。始终将组件附加到游戏对象。 | | [tag](https://docs.unity3d.com/ScriptReference/Component-tag.html) | 此游戏对象的标签。 | | [transform](https://docs.unity3d.com/ScriptReference/Component-transform.html) | 附加到此GameObject的Iransform. | | [hideFlags](https://docs.unity3d.com/ScriptReference/Object-hideFlags.html) | 该对象应该隐藏、随场景一起保存还是由用户修改? | | [name](https://docs.unity3d.com/ScriptReference/Object-name.html) | 对象的名称。 | ## Public Methods(废弃) | | | | --- | --- | | [BroadcastMessage](https://docs.unity3d.com/ScriptReference/Component.BroadcastMessage.html) | 调用此游戏对象或其任何子项中的每个MonoBehaviour上名为的方法。 | | [CompareTag](https://docs.unity3d.com/ScriptReference/Component.CompareTag.html) | 此游戏对象是否使用进行了标记? | | [GetComponent](https://docs.unity3d.com/ScriptReference/Component.GetComponent.html) | 如果游戏对象附加了类型为的组件,则将其返回,否则返回null. | | [GetComponentInChildren](https://docs.unity3d.com/ScriptReference/Component.GetComponentInChildren.html) | 使用深度首次搜索返回GameObject或其任何子项中类型为的组件。 | | [GetComponentInParent](https://docs.unity3d.com/ScriptReference/Component.GetComponentInParent.html) | 返回GameObject或其任何父项中类型为的组件。 | | [GetComponents](https://docs.unity3d.com/ScriptReference/Component.GetComponents.html) | 返回GameObject中类型为的所有组件。 | | [GetComponentsInChildren](https://docs.unity3d.com/ScriptReference/Component.GetComponentsInChildren.html) | 使用深度首次搜索返回GameObject或其任何子项中类型为的组件。 | | [GetComponentsInParent](https://docs.unity3d.com/ScriptReference/Component.GetComponentsInParent.html) | 返回GameObject或其任何子项中类型为的所有组件。 | | [SendMessage](https://docs.unity3d.com/ScriptReference/Component.SendMessage.html) |调用此游戏对象中的每个MonoBehaviour上名为的方法。 | | [SendMessageUpwards](https://docs.unity3d.com/ScriptReference/Component.SendMessageUpwards.html) | 调用此游戏对象中的每个MonoBehaviour上或此行为的每个父级上名为的方法 | | [TryGetComponent(新2019)](https://docs.unity3d.com/ScriptReference/Component.TryGetComponent.html) | 获取指定类型(如果存在)的组件。 | | [GetInstanceID](https://docs.unity3d.com/ScriptReference/Object.GetInstanceID.html) | 返回对象的实例ID. | | [ToString](https://docs.unity3d.com/ScriptReference/Object.ToString.html) | 返回 GameObject的名称。 | ## Static Methods | | | | --- | --- | | [Destroy](https://docs.unity3d.com/ScriptReference/Object.Destroy.html) | 删除GameObject、组件或资源。 | | [DestroyImmediate](https://docs.unity3d.com/ScriptReference/Object.DestroyImmediate.html) | 立即销毁对象/obj/。强烈建议您改用Destroy. | | [DontDestroyOnLoad](https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html) | 加载新场景时,不自动销毁对象/target/. | | [FindObjectOfType](https://docs.unity3d.com/ScriptReference/Object.FindObjectOfType.html) | 返回第一个类型为的已加载的激活对象。 | | [FindObjectsOfType](https://docs.unity3d.com/ScriptReference/Object.FindObjectsOfType.html) | 返回所有类型为的已加载的激活对象的列表。 | | [Instantiate](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html) | 克隆对象并返回克隆对象。 | ## Operators | | | | --- | --- | |[bool](https://docs.unity3d.com/ScriptReference/Object-operator_Object.html) | 该对象是否存在? | | [operator !=](https://docs.unity3d.com/ScriptReference/Object-operator_ne.html) | 比较两个对象是否引用不同的对象。 | | [operator ==](https://docs.unity3d.com/ScriptReference/Object-operator_eq.html) | 比较两个对象引用,判断它们是否引用同一个对象。 |