Unity动态实例化对象并添加onClick监听的语法问题
问题分析与解决方案
你的代码核心问题是:cube.transform.GetChild(0).gameObject本身没有onClick事件——这个事件是Button组件专属的,普通GameObject不存在这个成员。
修正步骤
- 先确保挂载TextMeshPro的子物体拥有Button组件:
- 要么提前在预制体的对应子物体上添加Button组件;
- 要么在代码里动态生成该组件。
- 然后获取Button组件实例,再调用
AddListener绑定事件逻辑。
修正后的代码示例
GameObject cube = (GameObject)Instantiate(prefab, new Vector3(0, x, y), Quaternion.identity, transform); // 获取挂载TextMeshPro的子物体 GameObject textObj = cube.transform.GetChild(0).gameObject; // 设置文本内容 textObj.GetComponent<TextMeshPro>().text = "Text Mesh Pro"; // 情况1:预制体子物体已提前添加Button组件 textObj.GetComponent<Button>().onClick.AddListener(() => DoSomething("example")); // 情况2:动态为子物体添加Button组件(如果预制体里没有的话) Button button = textObj.AddComponent<Button>(); button.onClick.AddListener(() => DoSomething("example"));
另外注意你原代码最后一行遗漏了分号,实际编写时要补上避免编译错误。
内容的提问来源于stack exchange,提问作者Gelso77
相关产品推荐
相关产品推荐

