您的位置:首页 > 产品设计 > UI/UE

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

2016-10-31 23:16 295 查看

说明:

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");}

整体测试如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity