鼠标事件详解
1、3D物体
OnMouseDown():鼠标按下
OnMouseDrag():鼠标在按下时拖动
OnMouseUp():鼠标抬起
OnMouseEnter():鼠标进入
OnMouseExit():鼠标离开
OnMouseOver():鼠标经过
OnMouseUpAsButton():只有鼠标在触发区域内按下,并在触发区域内抬起时才会触发
鼠标事件的原理为射线检测,所以事件对象要有碰撞体组件,并将事件脚本挂在对象物体上,即可触发相依的事件
//3D-----------------------------
private void OnMouseDown()
{
print("鼠标按下");
}
private void OnMouseDrag()
{
print("鼠标在按下时拖动");
}
private void OnMouseUp()
{
print("鼠标抬起");
}
private void OnMouseEnter()
{
print("鼠标进入");
}
private void OnMouseExit()
{
print("鼠标离开");
}
private void OnMouseOver()
{
print("鼠标经过");
}
private void OnMouseUpAsButton()
{
print("只有当鼠标按下抬起时调用");
}
2、UGUI
在3D物体上使用的鼠标事件是无法直接在UI上使用的,必须使用EventSystems的借口
添加命名空间using UnityEngine.EventSystems;
通过接口实现,达到效果;
注意:UI上无需添加2D碰撞体,但是Raycast Target必须处于勾选状态
using UnityEngine;
using UnityEngine.EventSystems;
public class MouseClickMethod : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler,IPointerDownHandler,IPointerUpHandler,IPointerClickHandler
{
//UI--------------------------
public void OnPointerDown(PointerEventData eventData)
{
print("鼠标按下_UI");
}
public void OnPointerUp(PointerEventData eventData)
{
print("鼠标抬起_UI");
}
public void OnPointerEnter(PointerEventData eventData)
{
print("鼠标进入_UI");
}
public void OnPointerExit(PointerEventData eventData)
{
print("鼠标离开_UI");
}
public void OnPointerClick(PointerEventData eventData)
{
print("鼠标点击_UI");
}
}
最后吐槽一句,这疫情是没完了吗?各位一定要做好防护啊!