留个档,动态给UGUI绑定事件的delagete工具类

直接上代码,动态给UGUI绑定事件的delagete工具类

using UnityEngine;
using UnityEngine.EventSystems;
using System;

/// <summary>
/// 事件监听类
/// 使用方法:UIEventListener.Get(gameObject).onScroll += OnScrollEvent;
/// </summary>
public class UIEventListener : EventTrigger
{
	public Action<PointerEventData> onClick = null;
	public Action<PointerEventData> onDoubleClick = null;
	public Action<BaseEventData> onCancel = null;
	public Action<PointerEventData> onDrag = null;
	public Action<PointerEventData> onBeginDrag = null;
	public Action<PointerEventData> onEndDrag = null;
	public Action<PointerEventData> onDrop = null;
	public Action<BaseEventData> onSubmit = null;
	public Action<PointerEventData> onScroll = null;
	public Action<BaseEventData> onSelect = null;
	public Action<BaseEventData> onDeselect = null;
	public Action<PointerEventData> onPointEnter = null;
	public Action<PointerEventData> onPointExit = null;
	public Action<PointerEventData> onPointUp = null;
	public Action<PointerEventData> onPointDown = null;
	public Action<AxisEventData> onMove = null;

	/// <summary>
	/// 添加事件监听
	/// </summary>
	/// <param name="go">被监听对象</param>
	public static UIEventListener Get(GameObject go)
	{
		UIEventListener trigger = go.GetComponent<UIEventListener>();
		if (trigger == null)
		{
			trigger = go.AddComponent<UIEventListener>();
		}

		return trigger;
	}

	/// <summary>
	/// 使用 eventData.button 获取鼠标信息;
	/// 使用 eventData.clickCount 获取点击次数;
	/// </summary>
	/// <param name="eventData"></param>
	public override void OnPointerClick(PointerEventData eventData)
	{
		onClick?.Invoke(eventData);

		if (onDoubleClick != null && eventData.clickCount == 2)
		{
			onDoubleClick(eventData);
		}
	}

	public override void OnCancel(BaseEventData eventData)
	{
		onCancel?.Invoke(eventData);
	}

	public override void OnDrag(PointerEventData eventData)
	{
		onDrag?.Invoke(eventData);
	}

	public override void OnBeginDrag(PointerEventData eventData)
	{
		onBeginDrag?.Invoke(eventData);
	}

	public override void OnEndDrag(PointerEventData eventData)
	{
		onEndDrag?.Invoke(eventData);
	}

	public override void OnDrop(PointerEventData eventData)
	{
		onDrop?.Invoke(eventData);
	}

	public override void OnSubmit(BaseEventData eventData)
	{
		onSubmit?.Invoke(eventData);
	}

	public override void OnScroll(PointerEventData eventData)
	{
		onScroll?.Invoke(eventData);
	}

	public override void OnSelect(BaseEventData eventData)
	{
		onSelect?.Invoke(eventData);
	}

	public override void OnDeselect(BaseEventData eventData)
	{
		onDeselect?.Invoke(eventData);
	}

	public override void OnPointerEnter(PointerEventData eventData)
	{
		onPointEnter?.Invoke(eventData);
	}

	public override void OnPointerExit(PointerEventData eventData)
	{
		onPointExit?.Invoke(eventData);
	}

	public override void OnPointerUp(PointerEventData eventData)
	{
		onPointUp?.Invoke(eventData);
	}

	public override void OnPointerDown(PointerEventData eventData)
	{
		onPointDown?.Invoke(eventData);
	}

	public override void OnMove(AxisEventData eventData)
	{
		onMove?.Invoke(eventData);
	}
}


程序学无止尽。
欢迎大家沟通,有啥不明确的,或者不对的,也可以和我私聊
我的QQ 334524067 神一般的狄狄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值