UGUI点击事件的几种代码添加方式

说明:

UGUI一般对Button等添加点击事件等时,往往会涉及到使用将脚本与Button相挂接的方式,今天介绍几种不需要挂接的方式,直接由代码与之产生相对应的效果。。。

方法一:

使用GetComponent<Button>().onClick.AddListener方法添加事件监听器:

    public GameObject btnTest1;
    void Start()
    {
        btnTest1.GetComponent<Button>().onClick.AddListener(delegate ()
        {
            Debug.Log("Click1111");
        });
    }
      
常见类型:
GetComponent<Button>().onClick.AddListener(delegate () {
                OnClickEvent(itemImg[i]._Obj);
            });
        }
    }

    void OnClickEvent(GameObject Obj)
    {
        
    }

方法二:

和方法一是同一种方法(对不太懂事件委托的大兄弟们随便了解一下),只是将所监听的事件由外部函数传递而来:

    public GameObject btnTest2;
    public GameObject btnTest3;
    void Start()
    {
        btnTest2.GetComponent<Button>().onClick.AddListener(btnClick2);

    }
    void btnClick2()
    {
        Debug.Log("Click2222");
    }

方法三:

自定义了一个类继承EventTrigger,并重写其中的部分所需要的方法(目的延伸UGUI中各种事件):
UGUI所提供的EventTrigger如下所示:

重写的好处在于,可以实现UGUI提供的Onclick事件之外的事件如:OnPointDown(按下事件)、OnPointExit(抬起事件)等一系列,可根据自己需求获取。
如下面所示:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class EventTriggerListener : UnityEngine.EventSystems.EventTrigger
{
    public delegate void VoidDelegate();
    public VoidDelegate onClick;


    static public EventTriggerListener Get(Transform transform)
    {
        EventTriggerListener listener = transform.GetComponent<EventTriggerListener>();
        if (listener == null)
            listener = transform.gameObject.AddComponent<EventTriggerListener>();
        return listener;
    }

    public override void OnPointerClick(PointerEventData eventData)
    {
        if (onClick != null)
            onClick();
    }
}

测试点击事件如下:
    public GameObject btnTest3;
    void Start()
    {
        EventTriggerListener.Get(btnTest3.transform).onClick += btnClick3;
    }

    void btnClick3()
    {
        Debug.Log("Click3333");
    }

整体测试如下:




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值