当鼠标悬停在 GUIElement 或 Collider 上时,每帧调用一次。
OnMouseEnter 在鼠标处于该对象上方的第一帧调用。
然后,每帧都调用 OnMouseOver,直到移开鼠标 - 此时,调用 OnMouseExit。
在属于 Ignore Raycast 层的对象上,不调用该函数。
This function is called on Colliders marked as Trigger if and only if Physics.queriesHitTriggers is true.
OnMouseOver 可以作为协同程序使用 - 在函数中使用 yield 语句即可。
该事件将发送到附加到 Collider 或 GUIElement 的所有脚本。
//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;
}
}