直接上代码
可能发现会有点蠢
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 遍历不同按钮,执行不同方法
/// </summary>
public class MenuButEvent : MonoBehaviour {
public Button[] buttons;
// Use this for initialization
void Start () {
for(int i = 0; i < buttons.Length; i++)
{
// 保存下标
int index =i;
//默认监听的方法只能是无参,若是监听带参数的方法则用委托
buttons[i].onClick.AddListener(delegate ()
{
// 这里不能直接传入i,因为在循环里i的内存地址不变,所以传入的是同一个i
// 就导致每个按钮绑定的是同样的方法,传入同样的参数
// 而每次循环我们都重新创建了一个index,这些index的内存地址都不一样,值也不一样
OnClick(index);
});
}
}
private void OnClick(int index)
{
switch (index)
{
case 0:
A();
break;
case 1:
B();
break;
case 2:
C();
break;
}
}
private void A()
{
Debug.Log("第一个按钮执行的方法");
}
private void B()
{
Debug.Log("第2个按钮执行的方法");
}
private void C()
{
Debug.Log("第3个按钮执行的方法");
}
}
借鉴:https://blog.csdn.net/iFasWind/article/details/82261221