Unity 代码动态添加EventTrigger

public static class UIUltil
{
    public static void RigistEventTrigger(this UIBehaviour _ui, EventTriggerType _eventTriggerType, Action<PointerEventData> _callback)
    {
        if (_ui == null)
        {
            Debug.LogError("invalid UIBehaviour can not be a trigger content.");
            return;
        }
        else
        {
            EventTrigger eventTrigger = _ui.GetComponent<EventTrigger>();
            if (eventTrigger == null)
            {
                eventTrigger = _ui.gameObject.AddComponent<EventTrigger>();
            }

            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = _eventTriggerType;
            entry.callback.AddListener((_pointData) =>
            {
                var baseData = _pointData as PointerEventData;
                _callback?.Invoke(baseData);
            });
            eventTrigger.triggers.Add(entry);
        }
    }
    public static void RigistEventTrigger(this UIBehaviour _ui, EventTriggerType _eventTriggerType, Action _callback)
    {
        if (_ui == null)
        {
            Debug.LogError("invalid UIBehaviour can not be a trigger content.");
            return;
        }
        else
        {
            EventTrigger eventTrigger = _ui.GetComponent<EventTrigger>();
            if (eventTrigger == null)
            {
                eventTrigger = _ui.gameObject.AddComponent<EventTrigger>();
            }



            EventTrigger.Entry entry = new EventTrigger.Entry();
            entry.eventID = _eventTriggerType;
            entry.callback.AddListener((_pointData) =>
            {
                //var baseData = _pointData as PointerEventData;
                _callback?.Invoke();
            });
            eventTrigger.triggers.Add(entry);
        }
    }
}

 

posted @ 2024-06-04 16:56  SummerTrainnn  阅读(87)  评论(0编辑  收藏  举报