查看: 458|回复: 0
打印 上一主题 下一主题

[其他] UGUI事件监听工具类

[复制链接]
may    

8830

主题

80

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52304
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-6-28 02:34:37 |只看该作者 |倒序浏览

用法示例
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.EventSystems;
  4. using UnityEngine.UI;
  5. public class ButtonTest : MonoBehaviour
  6. {
  7.    void Start()
  8.     {
  9.        UGUIEventListener.OnClick(gameObject, OnClick);
  10.     }
  11.    private void OnClick(BaseEventData eventData)
  12.    {
  13.        Debug.Log("被点击");
  14.    }
  15.   
  16. }
复制代码
工具类
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.EventSystems;
  4. using UnityEngine.Events;
  5. public class UGUIEventListener
  6. {
  7.     public static EventTrigger Get(GameObject go)
  8.     {
  9.         if (go == null)
  10.         {
  11.             return null;
  12.         }
  13.         EventTrigger trigger;
  14.         trigger = go.GetComponent<EventTrigger>();
  15.         if (trigger == null)
  16.         {
  17.             trigger = go.gameObject.AddComponent<EventTrigger>();
  18.         }
  19.         return trigger;
  20.     }
  21.     private static EventTrigger.Entry NewTrigger(EventTriggerType id,UnityAction<BaseEventData> callback)
  22.     {
  23.         EventTrigger.Entry entry = new EventTrigger.Entry();
  24.         entry.eventID = id;
  25.         entry.callback.AddListener(callback);
  26.         return entry;
  27.     }
  28.     /// <summary>
  29.     /// 添加监听
  30.     /// </summary>
  31.     /// <param name="mono"></param>
  32.     /// <param name="eventType"></param>
  33.     /// <param name="callback"></param>
  34.     public static void OnEvent(GameObject go, EventTriggerType eventType, UnityAction<BaseEventData> callback)
  35.     {
  36.         EventTrigger trigger = Get(go);
  37.         if (trigger == null)
  38.         {
  39.             return;
  40.         }
  41.         trigger.triggers.Add(NewTrigger(eventType, callback));
  42.     }
  43.     /// <summary>
  44.     /// 移除指定类型的监听
  45.     /// </summary>
  46.     /// <param name="mono"></param>
  47.     /// <param name="type"></param>
  48.     /// <param name="callback"></param>
  49.     public static void RemoveTrigger(GameObject go, EventTriggerType type, UnityAction<BaseEventData> callback)
  50.     {
  51.         EventTrigger trigger = Get(go);
  52.         if (trigger == null)
  53.         {
  54.             return;
  55.         }
  56.         for(int i=0;i<trigger.triggers.Count;++i)
  57.         {
  58.             if (trigger.triggers[i].eventID == type)
  59.             {
  60.                 trigger.triggers[i].callback.RemoveListener(callback);
  61.             }
  62.         }
  63.     }
  64.     /// <summary>
  65.     /// 移除所有该函数的监听
  66.     /// </summary>
  67.     /// <param name="mono"></param>
  68.     /// <param name="callback"></param>
  69.     public static void RemoveTrigger(GameObject go, UnityAction<BaseEventData> callback)
  70.     {
  71.         EventTrigger trigger = Get(go);
  72.         if (trigger == null)
  73.         {
  74.             return;
  75.         }
  76.         for (int i = 0; i < trigger.triggers.Count; ++i)
  77.         {
  78.             trigger.triggers[i].callback.RemoveListener(callback);
  79.         }
  80.     }
  81.     /// <summary>
  82.     /// 开始拖动
  83.     /// </summary>
  84.     /// <param name="mono"></param>
  85.     /// <param name="callback"></param>
  86.     public static void OnBeginDrag(GameObject go, UnityAction<BaseEventData> callback)
  87.     {
  88.         OnEvent(go, EventTriggerType.BeginDrag, callback);
  89.     }
  90.     /// <summary>
  91.     /// 取消
  92.     /// </summary>
  93.     /// <param name="mono"></param>
  94.     /// <param name="callback"></param>
  95.     public static void OnCancel(GameObject go, UnityAction<BaseEventData> callback)
  96.     {
  97.         OnEvent(go, EventTriggerType.Cancel, callback);
  98.     }
  99.     public static void OnDeselect(GameObject go, UnityAction<BaseEventData> callback)
  100.     {
  101.         OnEvent(go, EventTriggerType.Deselect, callback);
  102.     }
  103.     /// <summary>
  104.     /// 拖动
  105.     /// </summary>
  106.     /// <param name="mono"></param>
  107.     /// <param name="callback"></param>
  108.     public static void OnDrag(GameObject go, UnityAction<BaseEventData> callback)
  109.     {
  110.         OnEvent(go, EventTriggerType.Drag, callback);
  111.     }
  112.     public static void OnDrop(GameObject go, UnityAction<BaseEventData> callback)
  113.     {
  114.         OnEvent(go, EventTriggerType.Drop, callback);
  115.     }
  116.     public static void OnEndDrag(GameObject go, UnityAction<BaseEventData> callback)
  117.     {
  118.         OnEvent(go, EventTriggerType.EndDrag, callback);
  119.     }
  120.     public static void OnInitializeDrag(GameObject go, UnityAction<BaseEventData> callback)
  121.     {
  122.         OnEvent(go, EventTriggerType.InitializePotentialDrag, callback);
  123.     }
  124.     public static void OnMove(GameObject go, UnityAction<BaseEventData> callback)
  125.     {
  126.         OnEvent(go, EventTriggerType.Move, callback);
  127.     }
  128.     public static void OnClick(GameObject go, UnityAction<BaseEventData> callback)
  129.     {
  130.         OnEvent(go, EventTriggerType.PointerClick, callback);
  131.     }

  132.     public static void OnDown(GameObject go, UnityAction<BaseEventData> callback)
  133.     {
  134.         OnEvent(go, EventTriggerType.PointerDown, callback);
  135.     }
  136.     public static void OnEnter(GameObject go, UnityAction<BaseEventData> callback)
  137.     {
  138.         OnEvent(go, EventTriggerType.PointerEnter, callback);
  139.     }
  140.     public static void OnExit(GameObject go, UnityAction<BaseEventData> callback)
  141.     {
  142.         OnEvent(go, EventTriggerType.PointerExit, callback);
  143.     }
  144.     public static void OnUp(GameObject go, UnityAction<BaseEventData> callback)
  145.     {
  146.         OnEvent(go, EventTriggerType.PointerUp, callback);
  147.     }
  148.     public static void OnScroll(GameObject go, UnityAction<BaseEventData> callback)
  149.     {
  150.         OnEvent(go, EventTriggerType.Scroll, callback);
  151.     }
  152.     public static void OnSelect(GameObject go, UnityAction<BaseEventData> callback)
  153.     {
  154.         OnEvent(go, EventTriggerType.Select, callback);
  155.     }
  156.     public static void OnSubmit(GameObject go, UnityAction<BaseEventData> callback)
  157.     {
  158.         OnEvent(go, EventTriggerType.Submit, callback);
  159.     }
  160.     public static void OnUpdateSelected(GameObject go, UnityAction<BaseEventData> callback)
  161.     {
  162.         OnEvent(go, EventTriggerType.UpdateSelected, callback);
  163.     }
  164. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-5 02:25 , Processed in 0.085043 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部