【发布时间】:2016-01-25 06:34:59
【问题描述】:
我正在加载和实例化一个 Unity 预制件,其中包含 UI 对象(文本、按钮),并希望通过脚本为每个找到的按钮分配 onClick 处理程序...
GameObject uiObj = ResourceUtil.InstantiatePrefab("Prefabs/UI/Main Menu UI", "UI");
uiObj.transform.SetParent(gameObject.transform, false);
Button[] buttons = uiObj.GetComponentsInChildren<Button>();
foreach (Button button in buttons)
{
button.onClick.AddListener(() => OnUIButtonClick(button.name));
}
public void OnUIButtonClick(string buttonID)
{
Log.Debug("OnUIButtonClick: " + buttonID);
}
但是,当单击任何按钮时,只会注销最后一个按钮的 ID。似乎每个按钮都收到相同的 onClick 处理程序分配(这是迭代中的最后一个)。如何让它工作,以便将 onClick 处理程序唯一分配给每个按钮?
【问题讨论】:
标签: c# user-interface unity3d event-handling game-engine