给 UGUI 的Button添加事件目前总结了三种方法。
1、点击加号直接添加事件,这种方法是最常用的。
这种方法可以添加带参数的函数,但是参数个数最多是1个,如果有两个参数,Unity 不会显示出来。
首先写个脚本ButtonClickFIrst,然后把这个脚本挂载 Canvas 上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ButtonClickFIrst : MonoBehaviour
{
public void a()
{
Debug.Log("ccccccc");
}
}
然后把 Canvas拖到 Button 的 click 事件上。
然后选择点击时运行的函数
2、在代码中添加,通过AddListener添加事件
把这段脚本拖到 Button 上就可以添加事件,
当然还可以添加别的事件,通过 AddListener。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ButtonClick : MonoBehaviour
{
// Start is called before the first frame update
void b()
{
Debug.Log("aaaaaaaaaaaa");
}
void addFun()
{
Button a = transform.GetComponent<Button>();
a.onClick.AddListener(b);
}
void Start()
{
addFun();
}
// Update is called once per frame
void Update()
{
}
}
3、接口添加事件
继承接口IPointerClickHandler,添加事件。
这个接口是点击事件的接口,还有别的好多事件的接口,直接继承就可以。直接在后面,添加接口即可。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ButtonClick : MonoBehaviour,IPointerClickHandler
{
// Start is called before the first frame update
void b()
{
Debug.Log("aaaaaaaaaaaa");
}
void addFun()
{
Button a = transform.GetComponent<Button>();
a.onClick.AddListener(b);
}
void Start()
{
addFun();
}
// Update is called once per frame
void Update()
{
}
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("clickCount:::"+eventData.clickCount);
}
}