在Unity中,这些接口是与Unity的Event System(事件系统)和UI系统紧密相关的!
一,头文件
使用UI的内置接口需要导入头文件:using UnityEngine.EventSystems;
二,接口的使用
public class buttonEvent : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
{
实现代码......(继承接口必须实现!)
}
三,接口的介绍
// 当指针(如鼠标光标)进入对象时调用
public interface IPointerEnterHandler { void OnPointerEnter(PointerEventData eventData); }
// 当指针离开对象时调用
public interface IPointerExitHandler { void OnPointerExit(PointerEventData eventData); }
// 当指针在对象上按下时调用(仅在按下的那一帧)
public interface IPointerDownHandler { void OnPointerDown(PointerEventData eventData); }
// 当指针在对象上释放时调用(在最初按下的对象上调用)
public interface IPointerUpHandler
{ void OnPointerUp(PointerEventData eventData); }
// 当指针在同一对象上按下并释放时调用(模拟点击)
public interface IPointerClickHandler
{ void OnPointerClick(PointerEventData eventData); // 注意:这里的描述可能有些误导,OnPointerClick 实际上只在点击动作完成时调用一次, // 而不是在点击的整个时间段内持续调用。 }
// 当拖拽即将开始时在拖拽对象上调用
public interface IBeginDragHandler { void OnBeginDrag(PointerEventData eventData); }
// 当拖拽发生时在拖拽对象上调用
public interface IDragHandler { void OnDrag(PointerEventData eventData); }
// 当拖拽结束时在拖拽对象上调用
public interface IEndDragHandler { void OnEndDrag(PointerEventData eventData); }
// 当拖拽结束时在放置目标对象上调用
public interface IDropHandler { void OnDrop(PointerEventData eventData); }
// 当鼠标滚轮滚动时调用
public interface IScrollHandler
{ void OnScroll(PointerEventData eventData); }
// 在每个tick上在选定的对象上调用
public interface IUpdateSelectedHandler
{ void OnUpdateSelected(BaseEventData eventData); // 注意:这里使用BaseEventData而非PointerEventData,因为此事件可能与指针操作无关 }
// 当对象成为选定对象时调用
public interface ISelectHandler
{ void OnSelect(BaseEventData eventData); // 同上,使用BaseEventData }
// 当选定对象变为未选定时调用
public interface IDeselectHandler
{ void OnDeselect(BaseEventData eventData); // 同上,使用BaseEventData }
// 当移动事件发生时调用(左、右、上、下等)
public interface IMoveHandler
{ void OnMove(AxisEventData eventData); // 注意:这里使用AxisEventData,因为它与移动方向相关 }
// 当提交按钮被按下时调用
public interface ISubmitHandler
{ void OnSubmit(BaseEventData eventData); // 提交操作可能不需要特定的指针数据 }
// 当取消按钮被按下时调用
public interface ICancelHandler
{ void OnCancel(BaseEventData eventData); // 取消操作同样可能不需要特定的指针数据 }