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

MonoBehaviour.OnMouseOver()

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

描述

当鼠标悬停在 碰撞器 上时,每帧调用一次。

鼠标第一次悬停在对象上时,会调用 OnMouseEnter。然后,每帧都会调用 OnMouseOver,直到鼠标移开,此时会调用 OnMouseExit

此函数不会在属于忽略射线层的对象上调用。

当以下属性设置为 true 时,此函数会在标记为触发器的碰撞器和 2D 碰撞器上调用

- 对于 3D 物理:Physics.queriesHitTriggers

- 对于 2D 物理:Physics2D.queriesHitTriggers

OnMouseOver 可以是协程,只需在函数中使用 yield 语句。此事件会发送到附加到 碰撞器 的所有脚本。

//Attach this script to a GameObject to have it output messages when your mouse hovers over it.
using UnityEngine;

public class OnMouseOverExample : MonoBehaviour { void OnMouseOver() { //If your mouse hovers over the GameObject with the script attached, output this message Debug.Log("Mouse is over GameObject."); }

void OnMouseExit() { //The mouse is no longer hovering over the GameObject so output this message each frame Debug.Log("Mouse is no longer on GameObject."); } }

另一个例子

// This second example changes the GameObject's color to red when the mouse hovers over it
// Ensure the GameObject has a MeshRenderer

using UnityEngine;

public class OnMouseOverColor : MonoBehaviour { //When the mouse hovers over the GameObject, it turns to this color (red) Color m_MouseOverColor = Color.red;

//This stores the GameObject’s original color Color m_OriginalColor;

//Get the GameObject’s mesh renderer to access the GameObject’s material and color MeshRenderer m_Renderer;

void Start() { //Fetch the mesh renderer component from the GameObject m_Renderer = GetComponent<MeshRenderer>(); //Fetch the original color of the GameObject m_OriginalColor = m_Renderer.material.color; }

void OnMouseOver() { // Change the color of the GameObject to red when the mouse is over GameObject m_Renderer.material.color = m_MouseOverColor; }

void OnMouseExit() { // Reset the color of the GameObject back to normal m_Renderer.material.color = m_OriginalColor; } }