//==========================
// - FileName: UIListener.cs
// - Created: true.
// - CreateTime: 2020/08/07 22:29:19
// - Email: 1670328571@qq.com
// - Region: China WUHAN
// - Description: Unity 事件监听
//==========================
using System;
using UnityEngine;
using UnityEngine.EventSystems;
public class PEListener : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IDragHandler
{
public Action<object> onClick;
public Action<PointerEventData> onClickDown;
public Action<PointerEventData> onClickUp;
public Action<PointerEventData> onDrag;
public object args;
public void OnPointerClick(PointerEventData eventData)
{
if (onClick != null)
{
onClick(args);
}
}
public void OnPointerDown(PointerEventData eventData)
{
if (onClickDown != null)
{
onClickDown(eventData);
}
}
public void OnPointerUp(PointerEventData eventData)
{
if (onClickUp != null)
{
onClickUp(eventData);
}
}
public void OnDrag(PointerEventData eventData)
{
if (onDrag != null)
{
onDrag(eventData);
}
}
}
使UI面板基类去实现暴露出来的接口方法:
#region Click Evts
protected void OnClick(GameObject go, Action<object> cb, object args)
{
PEListener listener = GetOrAddComponect<PEListener>(go);
listener.onClick = cb;
listener.args = args;
}
protected void OnClickDown(GameObject go, Action<PointerEventData> cb)
{
PEListener listener = GetOrAddComponect<PEListener>(go);
listener.onClickDown = cb;
}
protected void OnClickUp(GameObject go, Action<PointerEventData> cb)
{
PEListener listener = GetOrAddComponect<PEListener>(go);
listener.onClickUp = cb;
}
protected void OnDrag(GameObject go, Action<PointerEventData> cb)
{
PEListener listener = GetOrAddComponect<PEListener>(go);
listener.onDrag = cb;
}
#endregion