下面是我用UGUI的button的onClick.AddListener写的一个添加OnClick的方法
如果有什么不对的地方,多谢大神评论
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
public class AddDelegateListed : MonoBehaviour {
public List<Button> btnArray = new List<Button>();
public Transform[] targets;
// Use this for initialization
void Start () {
//找到该物体的子物体中包含Button组件的gameObject,并添加到btnArray中
btnArray.AddRange( transform.GetComponentsInChildren<Button>());
for (int i = 0; i < btnArray.Count; i++)
{
//Debug.Log(btnArray[i].name);//检查是否找到button组件
//int index = i;
//这里单独定义一个button是为了传递参数,如果不传参数的话可以不用定义的
//而且传参数不能直接传关于 i 的参数,因为添加delegate的时候OnClick不会被调用,
//只有点击的时候才会调用,如果传了有关 i 的参数就是最后一个 有关 i 的参数了
//我试过如果直接传 i 的话,在添加的 delegate 的方法中,打印出来是最后一个 i 的值
//原因也很简单就是 i 一直是同一个内存地址,每次改变的是 i 的值,所以最后这里只要把 i 改了就传的参也变了
Button sender = btnArray[i];
//添加监听的 delegate 参数是一个delegate
btnArray[i].onClick.AddListener(
delegate()
{
OnClickAddButton(sender.gameObject);
});
}
}
private void OnClickAddButton(GameObject index)
{
Debug.Log("btnName : " + index.name);
}
// Update is called once per frame
void Update () {
}
}