0

在我的应用程序中,我有一个 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)
{
    //...
}

我在编辑器脚本中创建了一个 GUILayout.Button 来调用“生成”方法。按钮已创建,我没有收到任何错误,但按钮中没有添加任何事件。

4

1 回答 1

0

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

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

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

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

于 2020-05-06T17:05:47.703 回答