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

Unity中能否使用多个TMP_Text或TextMeshPro组件?

关于多个TMP_Text组件的使用与标签调用问题

1. 能否添加多个TMP_Text组件?

完全可以。不管是在同一个GameObject上,还是不同GameObject上,都能挂载多个TMP_Text组件。你遇到内容只显示在第一个组件上的问题,通常是代码里只获取了第一个TMP_Text实例(比如用GetComponent<TMP_Text>()),没对其他组件做赋值操作。

如果是在同一个物体上挂了多个TMP_Text,想要获取全部实例,可以用GetComponents<TMP_Text>()方法,它会返回一个TMP_Text数组,之后就能分别给每个组件赋值:

TMP_Text[] tmpTexts = GetComponents<TMP_Text>();
// 给第一个组件赋值
tmpTexts[0].text = "第一个结果";
// 给第二个组件赋值
tmpTexts[1].text = "第二个结果";

如果是不同物体上的TMP_Text,确保每个组件都被正确引用或者通过查找方式获取到即可。

2. 给TMP_Text添加标签后如何调用?

注意:标签是给挂载TMP_Text的GameObject设置的,不是直接给组件加标签。先在Inspector面板给目标GameObject设置好标签,再通过以下方式调用:

  • 获取单个带指定标签的TMP_Text:
    如果场景中只有一个带该标签的物体,用GameObject.FindWithTag("你的标签名")找到物体后再提取组件:
GameObject targetObj = GameObject.FindWithTag("ResultText");
if(targetObj != null)
{
    TMP_Text tmpText = targetObj.GetComponent<TMP_Text>();
    tmpText.text = "需要显示的内容";
}
  • 获取多个带指定标签的TMP_Text:
    如果有多个同标签的物体,用GameObject.FindGameObjectsWithTag("你的标签名")获取所有物体,再逐个提取组件:
GameObject[] targetObjs = GameObject.FindGameObjectsWithTag("ResultText");
foreach(GameObject obj in targetObjs)
{
    TMP_Text tmpText = obj.GetComponent<TMP_Text>();
    // 可根据需求给不同组件赋值,比如按索引区分内容
    tmpText.text = "对应结果内容";
}

另外提醒:FindWithTag这类查找方法运行时效率不算高,如果是固定的组件,更推荐在Inspector面板直接拖拽引用,性能更优。

内容的提问来源于stack exchange,提问作者Liora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:25:19