You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:35:35