下面是我用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 () { } }