如何用AddListener为PointerEvent增加事件绑定

一、用代码可以为OnPointerEnter添加Addlisteners绑定?

如下所示,(1)是对的,但是(2)是有问题的

答曰:不能
在这里插入图片描述

二、EventTrigger的面板配置

在这里插入图片描述

三、那么,如何用代码来实现OnPointerEnter的事件绑定呢?

【1】、为EventTrigger定制一个扩展方法——Addlistener()

/// <summary>
/// 扩展的方法
/// </summary>
public static class ExtensionMethods
{
    /// <summary>
    /// 为EventTrigger的事件类型绑定Action方法
    /// </summary>
    /// <param name="trigger">EventTrigger组件对象</param>
    /// <param name="eventType">事件类型</param>
    /// <param name="listenedAction">要执行的方法</param>
    public static void AddListener(this EventTrigger trigger, EventTriggerType eventType, Action<PointerEventData> listenedAction)
    {
        EventTrigger.Entry entry = new EventTrigger.Entry();
        entry.eventID = eventType;
        entry.callback.AddListener(data => listenedAction.Invoke((PointerEventData)data));
        trigger.triggers.Add(entry);
    }
}

【2】、用刚才定义的扩展Addlistener()方法添加绑定

数据结构的定义

public class plantInfo
{
    //......
    public GameObject go;
    public stromg seriseNo;
    //......
}

public List<plantInfo> plantsList = new List<plantInfo>();
plantsList  = ...
//Button PointerEnter 添加侦听
plantsList.ForEach(p=> 
{
    p.go.GetComponent<Button>().GetComponent<EventTrigger>()
    .AddListener(EventTriggerType.PointerEnter, (PointerEventData eventData) =>
    {
        Debug.Log($"当前Enter的物体:{p.seriseNo}");
        endImage = p.go;
    });
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值