using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;//
using System;//Action是命名空间下的委托
public class GridUI : MonoBehaviour ,IPointerEnterHandler,IPointerExitHandler,IBeginDragHandler,IDragHandler,IEndDragHandler{
//前两个是鼠标显示信息框的,后两个是物品拖拽的
public static Action<Transform> OnEnter;//定义静态事件
public static Action OnExit;//定义静态事件
public void OnPointerEnter(PointerEventData evenData){
//鼠标进入UI调用该方法
if (evenData.pointerEnter.tag == "Grid") {
if(OnEnter !=null){
OnEnter (transform);//传参
Debug.Log("进入");
}
}
}
public void OnPointerExit(PointerEventData evenData){
//鼠标离开UI调用该方法
if (evenData.pointerEnter.tag == "Grid") {
if(OnExit !=null){
OnExit ();
Debug.Log ("离开");
}
}
}
public static Action<Transform> OnLeftBeginDrag;//左键开始拖拽
public static Action<Transform,Transform> OnLeftEndDrag;//左键结束拖拽(当前自己的,拖拽后的)
public void OnBeginDrag(PointerEventData evenData){
if(evenData.button == PointerEventData.InputButton.Left){
//左键按下
if(OnLeftBeginDrag !=null){
OnLeftBeginDrag (transform);//调用事件
}
}
}
public void OnDrag(PointerEventData evenData){
}
public void OnEndDrag(PointerEventData evenData){
if(evenData.button == PointerEventData.InputButton.Left){
//左键按下结束
if(OnLeftEndDrag !=null){
if(evenData.pointerEnter == null)//没放到UI上
OnLeftEndDrag (transform, null);//调用事件
else
OnLeftEndDrag (transform,evenData.pointerEnter.transform);
}
}
}
}
做UI界面要注意,因为信息框是随着信息的多少而放大缩小的