我查看了位于此处的处理相同问题的帖子,但它既没有说明问题所在,也没有解决我的问题。我在面板中创建了一个带有多个按钮的 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。
1 回答
- 1 回答
- 0 关注
- 1115 浏览
添加回答
举报
0/150
提交
取消