对Unity EventSystem提供的常用事件接口进行了封装:
JPointerContainer类处理点击的交互
using GameUI.Components;
using System;
using UnityEngine.EventSystems;
namespace GameUI.Components
{
/// <summary>
/// 点击交互功能容器
/// </summary>
public class JPointerContainer : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler, ISelectHandler, IDeselectHandler
{
//把交互处理抛出
public Action<PointerEventData> onPointerClick;
public Action<PointerEventData> onPointerDown;
public Action<PointerEventData> onPointerUp;
public Action<PointerEventData> onPointerEnter;
public Action<PointerEventData> onPointerExit;
public Action<BaseEventData> onSelect;
public Action<BaseEventData> onDeselect;
public void OnPointerClick(PointerEventData eventData)
{
if (onPointerClick != null) onPointerClick(eventData);
}
public void OnPointerDown(PointerEventData eventData)
{
EventSystem.current.SetSelectedGameObject(gameObject, eventData);
if (onPointerDown != null) onPointerDown(eventData);
}
public void OnPointerUp(PointerEventData eventData)
{
if (onPointerUp != null) onPointerUp(eventData);
}
public void OnPointerEnter(PointerEventData eventData)
{
if (onPointerEnter != null) onPointerEnter(eventData);
}
public void OnPointerExit(PointerEventData eventData)
{
if (onPointerExit != null) onPointerExit(eventData);
}
public void OnSelect(BaseEventData eventData)
{
if (onSelect != null) onSelect(eventData);
}
public void OnDeselect(BaseEventData eventData)
{
if (onDeselect != null) onDeselect(eventData);
}
void OnDestroy()
{
onPointerClick = null;
onPointerDown = null;
onPointerUp = null;
onPointerEnter = null;
onPointerExit = null;
onSelect = null;
onDeselect = null;
}
}
}
JDragContainer处理拖拽的交互
using GameUI.Components;
using System;
using UnityEngine.EventSystems;
namespace GameUI.Components
{
/// <summary>
/// 拖拽功能容器
/// </summary>
public class JDragContainer : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public Action<PointerEventData> onBeginDrag;
public Action<PointerEventData> onDrag;
public Action<PointerEventData> onEndDrag;
public void OnBeginDrag(PointerEventData eventData)
{
if (onBeginDrag != null) onBeginDrag(eventData);
}
public void OnDrag(PointerEventData eventData)
{
if (onDrag != null) onDrag(eventData);
}
public void OnEndDrag(PointerEventData eventData)
{
if (onEndDrag != null) onEndDrag(eventData);
}
void OnDestroy()
{
onBeginDrag = null;
onDrag = null;
onEndDrag = null;
}
}
}