因为经常忘记鼠标点击UI接口事件(PS:本人的英语水平太差了,老是记不住,所以记录一下),并且记录一些基础的功能
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class MouseClickingImage : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler,
IPointerClickHandler, IPointerDownHandler, IPointerUpHandler,
IDragHandler, IEndDragHandler, IBeginDragHandler
{
private RectTransform rt;
private void Start()
{
rt = GetComponent<RectTransform>();
}
//接口为:IPointerClickHandler
//鼠标点击了UI
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("鼠标点击了UI");
}
//接口为:IPointerDownHandler
//鼠标按下了UI
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("鼠标按下了");
}
//接口为:IPointerEnterHandler
//鼠标进入UI
public void OnPointerEnter(PointerEventData eventData)
{
switch (eventData.button)
{
case PointerEventData.InputButton.Left:
//鼠标左键
break;
case PointerEventData.InputButton.Right:
//鼠标右键
break;
case PointerEventData.InputButton.Middle:
//鼠标中键
break;
default:
break;
}
Debug.Log("鼠标进入UI");
}
//接口为:IPointerExitHandler
//鼠标退出UI
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("鼠标退出UI");
}
//接口为:IPointerUpHandler
//鼠标在UI上抬起来了
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("鼠标在UI上抬起来了");
}
//接口为:IDragHandler
//鼠标点击中并且移动了执行的事件
public void OnDrag(PointerEventData eventData)
{
Debug.Log("鼠标点击中并且移动了");
rt.position = Input.mousePosition;
}
//接口为:IEndDragHandler
//鼠标点击了,并且移动了,松开鼠标之后,执行一次
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("鼠标点击了,并且移动了,松开鼠标之后,执行一次");
GameObject go = eventData.pointerCurrentRaycast.gameObject;
if (go == null)
{
Debug.Log("此UI没有碰撞到任何UI");
}
else
{
Debug.Log("此UI碰撞到的UI的名字为:" + go.name);
}
gameObject.GetComponent<Image>().raycastTarget = true;
}
//接口为:IBeginDragHandler
//鼠标点击了,并且移动了的第一帧执行
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("鼠标点击了,并且移动了的第一帧执行");
gameObject.GetComponent<Image>().raycastTarget = false;
}
}