关于unity:添加EventTrigger事件监听方法

  /// <summary>
    /// 增加EventTrigger事件监听办法
    /// </summary>
    /// <param name="trans"></param>
    /// <param name="type"></param>
    /// <param name="action"></param>
    public static void AddEventTriggerHandler(this Transform trans, EventTriggerType type,UnityAction<BaseEventData> action)
    {
        EventTrigger eventTrigger = null;
        if (!trans.TryGetComponent<EventTrigger>(out eventTrigger))
        {
            eventTrigger = trans.gameObject.AddComponent<EventTrigger>();
        }
        if (eventTrigger.triggers == null)
        {
            eventTrigger.triggers = new List<EventTrigger.Entry>();
        }
        var entry = eventTrigger.triggers.FirstOrDefault(p => p.eventID == type);
        if (entry == null)
        {
            entry = new EventTrigger.Entry
            {
                eventID = type,
            };
            entry.callback.AddListener(action);
            eventTrigger.triggers.Add(entry);
        }
        else
        {
            entry.callback.RemoveAllListeners();
            entry.callback.AddListener(action);
        }
    }
    /// <summary>
    /// 增加带自定义参数的EventTrigger事件监听办法
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="trans"></param>
    /// <param name="type"></param>
    /// <param name="action"></param>
    /// <param name="t"></param>
    public static void AddEventTriggerHandler<T>(this Transform trans, EventTriggerType type, UnityAction<BaseEventData, T> action, T t)
    {
        trans.AddEventTriggerHandler(type,p =>
        {
            action(p,t);
        });
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理