有关泛型UnityAction<T>和EventTrigger的搭配使用

功能需求:在消消乐中,将鼠标点击的对象和相邻的对象(鼠标点击后放置的地方)位置进行互换;

介绍:1.0 使用的EventTrigger使用事件触发进行监听事件

         2.0 UnityAction<T>这是一个泛型委托,用来将方法注册进去;

         3.0 我们可以在UnityEvent中使用AddListener()方法注册UnityAction<T>;

    void Awake()
    {
        Init();
    }
    public void Init()
    {
        EventTrigger trigger = gameObject.AddComponent<EventTrigger>();
        //触发监听
        UnityAction<BaseEventData> pointerEnterAction = new UnityAction<BaseEventData>(GemstonePointerEnterLister);//将方法注册到委托中
        EventTrigger.Entry pointerEnterEvent = new EventTrigger.Entry { eventID = EventTriggerType.PointerEnter };
        pointerEnterEvent.callback.AddListener(pointerEnterAction);//对委托也就是方法进行监听
        trigger.triggers.Add(pointerEnterEvent);//将事件添加到EventTrigger中去
        //点击监听
        UnityAction<BaseEventData> pointerClickAction = new UnityAction<BaseEventData>(GemstonePointerClickLister);
        EventTrigger.Entry pointerClickEvent = new EventTrigger.Entry { eventID = EventTriggerType.PointerDown };
        pointerClickEvent.callback.AddListener(pointerClickAction);
        trigger.triggers.Add(pointerClickEvent);
    }
    /// <summary>
    /// 宝石在焦点触发时调用
    /// </summary>
    public void GemstonePointerEnterLister(BaseEventData data)
    {
        Debug.Log("触发对象");
    }
    /// <summary>
    /// 宝石在点击时调用
    /// </summary>
    public void GemstonePointerClickLister(BaseEventData data)
    {
        Debug.Log("鼠标点击对象");
    }


猜你喜欢

转载自blog.csdn.net/U3DJueQi/article/details/80776333