unity给物体动态添加EventTrigger事件

直接上代码吧

 EventTrigger trigger = obj.GetComponent<EventTrigger>();//obj是需要绑事件的物体
                if (trigger == null)
                {
                    trigger = obj.AddComponent<EventTrigger>();
                }

                if (trigger.triggers.Count == 0)
                {
                    //定义所要绑定的事件类型 
                    EventTrigger.Entry entry = new EventTrigger.Entry();
                    //设置事件类型  
                    entry.eventID = EventTriggerType.PointerDown;
                    //初始化回调函数
                    entry.callback = new EventTrigger.TriggerEvent();
                    //定义回调函数  
                    UnityEngine.Events.UnityAction<BaseEventData> callback = new UnityEngine.Events.UnityAction<BaseEventData>(DropFun);
                    //设置回调函数  
                    entry.callback.AddListener(callback);
                    //添加事件触发记录到GameObject的事件触发组件  
                    trigger.triggers.Add(entry);
    //回调函数
 public void DropFun(BaseEventData data)
    {
    }

当有多个时可以把这个步骤封装成一个方法

/// <summary>
    /// event事件绑定的方法
    /// </summary>
    /// <param name="insObject">事件物体</param>
    /// <param name="eventType">事件类型</param>
    /// <param name="myFunction">事件需要的回调方法</param>
    public void AddEventTrigger(Transform insObject, EventTriggerType eventType, UnityEngine.Events.UnityAction<BaseEventData> myFunction)//泛型委托
    {
        EventTrigger trigger = insObject.GetComponent<EventTrigger>();
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = eventType;
        entry.callback.AddListener(myFunction);
        trigger.triggers.Add(entry);
    }
    //调用
    AddEventTrigger(obj.transform, EventTriggerType.PointerDown, DropFun);
    目前就这样了  博主也在持续学习

猜你喜欢

转载自blog.csdn.net/liuzhongchao123/article/details/82153249
今日推荐