Unity通过脚本代码添加EventTrigger事件和监听

Unity通过脚本代码添加EventTrigger事件和监听

通过脚本代码添加 EventTrigger 事件和监听的主要流程是:

  1. 获取 EventTrigger.Entry 对象作为触发器的载体
  2. 设置载体的类型(eventID)和监听方法(callback
  3. 将载体添加到 EventTrigger 对象的触发器列表(triggers)中

具体的代码如下:

/// <summary>
/// 为EventTrigger添加事件及事件监听。
/// </summary>
/// <param name="obj">带有或需要添加EventTrigger的对象</param>
/// <param name="eventType">要添加的事件的类型</param>
/// <param name="callback">事件的触发回调</param>
private void AddEventTriggerEvent(Component obj, EventTriggerType eventType, UnityAction<BaseEventData> callback)
{
    EventTrigger.Entry entry = null;
    EventTrigger trigger = obj.GetComponent<EventTrigger>();

    if (trigger != null) // 已有EventTrigger
    {
        // 查找是否已经存在要注册的事件
        foreach (EventTrigger.Entry existingEntry in trigger.triggers)
        {
            if (existingEntry.eventID == eventType)
            {
                entry = existingEntry;
                break;
            }
        }
    }
    else // 添加新的EventTrigger
    {
        trigger = obj.gameObject.AddComponent<EventTrigger>();
    }

    // 如果这个事件不存在,就创建新的实例
    if (entry == null)
    {
        entry = new EventTrigger.Entry();
        entry.eventID = eventType;
        // todo 如果已经存在这个事件,它的callback是否还需要new?
        entry.callback = new EventTrigger.TriggerEvent();
    }

    // 添加触发回调并注册事件
    entry.callback.AddListener(callback);
    trigger.triggers.Add(entry);
}
发布了76 篇原创文章 · 获赞 131 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/qq_21397217/article/details/85761889