Unity:UI.从脚本添加OnClick事件的按钮失败



在我的应用程序中,我有一个GameObject的列表,我通过代码为列表中的每个GameObject创建一个按钮。问题是,当我通过代码添加和onClick事件时,按钮onClick列表中没有显示任何内容,当我单击按钮时也不会发生任何事情,并且在过程中没有出现任何错误。以下是我的代码的样子:

public GameObject prefab;
public void Generate()
{
for (int i = 0; i < myList.Count; i++)
{
GameObject _t = Instantiate(prefab, myUIPanel.transform) as GameObject;
//Positioning, naming, ...
_t.GetComponent<Button>().onClick.AddListener(delegate { MyFunction(i); });
}
}
public void MyFunction(int index)
{
//...
}

我在编辑器脚本中创建了一个GUILLayout.Button来调用"Generate"方法。按钮已经创建,我没有得到任何错误,但没有在按钮中添加任何事件。

edit:因为ui元素是从预制件实例化的,所以按钮没有连接到EventSystem

解决方法:使用scriptableobject而不是单设备,scriptableobject独立于场景/游戏对象实例工作

教程:https://docs.unity3d.com/Manual/class-ScriptableObject.html

https://www.raywenderlich.com/2826197-scriptableobject-tutorial-getting-started

最新更新