Unity for循环按钮添加事件(监听)@方便实用
Unity for循环按钮添加事件
利用for循环给Button添加监听,还在为不知道点击了那个按钮在烦恼吗?最近在做项目遇到这个问题花了点时间研究了一下,下面就来看我是怎么解决的吧。话不多说直接上代码:
public class LevelButton
{
public Transform myTransform;
public int index = 0;
public Button myButton;
public LevelButton(Transform myTransform, int index)
{
this.myTransform = myTransform;
this.index = index;
myButton = myTransform.GetComponent<Button>();
}
public void AddListener(Action<int> onClick)
{
myButton.onClick.AddListener(() => { onClick?.Invoke(index); });
}
public void RemoveListener()
{
myButton.onClick.RemoveAllListeners();
}
}
public class GameLobbySceneCtrl : UIBase
{
public Button[] m_LevelButton;//手动添加Button,你也可以将所有Button放置在同一空节点下用GetComponentsInChildren<Button>()
[HideInInspector]
public int currLevel_Id;
public int currLevel_Level;
public override void A_Start()
{
for(int i = 0; i < m_LevelButton.Length; i++)
{
var button = m_LevelButton[i];
var levelButton = new LevelButton(button.transform, i);
levelButton.AddListener(On_ChoiseLevelBtn_Click);
}
//Init_Grid();
}
#region 选择关卡On_ChoiseLevelBtn_Click
private void On_ChoiseLevelBtn_Click(int n)
{
//这里可以添加你点击按钮需要实现的功能
}
#endregion
有其他更优秀的方法就私信我,我们一起学习交流