Unity按钮点击不触发事件

我查看了位于此处的处理相同问题的帖子,但它既没有说明问题所在,也没有解决我的问题。

我在面板中创建了一个带有多个按钮的 Canvas 预制件。我在运行时实例化预制件并抓取Button面板中的所有对象。然后我onClick()为所有调用相同clicked()方法的按钮添加一个监听器到事件中

public class GameOptions

{

    private GameObject canvas;


    public GameOptions(GameObject canvas)

    {

        this.canvas = canvas;

        GameObject.Instantiate(canvas);        

        Text[] textObjects = canvas.GetComponentsInChildren<Text>();

        Button[] buttonObjects = canvas.GetComponentsInChildren<Button>();


        for (int i = 0; i < buttonObjects.Length; i++)

        {

            Debug.Log(buttonObjects[i].name);

            buttonObjects[i].onClick.AddListener(() => clicked());

            buttonObjects[i].onClick.Invoke();

        }

    }


    public void clicked()

    {

        Debug.Log("Clicked!");

    }

}

请注意,当我通过代码调用事件时,clicked()被调用并“点击!” 正确输出到控制台。


但是,单击时没有任何按钮触发事件。我还注意到检查器中 OnClick 中的 PersistentCalls.Calls 数组在运行时对于所有按钮都有 0 个元素。


我在 Windows 10 64 中使用 Unity 2017.4.3f1。


四季花海
浏览 1116回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP