unity 默认点击事件不支持参数 ,但是 我们可以通过闭包方式 以及动态添加点击事件的方式 实现点击事件传参
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test3 : MonoBehaviour {
public GameObject btnPrefab;
private void Awake()
{
for (int i = 0; i < 4; i++)
{
GameObject go = Instantiate(btnPrefab, transform);
//动态添加点击事件
int j = i;
go.GetComponent<Button>().onClick.AddListener(() =>
{
//如果传i 会出现不管哪个按钮点击index都会为4 ,这个是闭包的一个坑 要解决 只需要 定义局部变量j 传j即可
//OnClick(go,i);
OnClick(go, j);
});
}
}
private void OnClick(GameObject go,int index)
{
//点击事件
}
}