在Unity中,我想以这种方式创建我的UI:
- 创建一个UI游戏对象,其中布置了所有文本/按钮/等。
- 将该对象另存为预制件。
- 在运行时加载预制件并将其实例化,然后将其作为子项添加到父 UI 容器对象。
现在的问题是如何在运行时为按钮分配事件处理程序(因为在制作预制件时会删除检查器中分配的事件处理程序)。
我正在尝试这段代码,但它不起作用:
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));
}
private void OnUIButtonClick(Button button)
{
Log.Debug("OnUIButtonClick: " + button);
}
UI 预制件已成功加载和添加,但按钮在单击它们时不起作用。有人知道如何成功地做到这一点吗?
将侦听器分配给按钮组件已正确完成。我已经测试了您的代码,它对我有用。韦尔德,也许问题出在别的地方。您是否已将事件系统添加到场景中?