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

如何将存储的列表内容显示在UI TMP中?赋值失败求助

UI TMP文本赋值报错解决方法

常见问题排查与修复

  • 组件未正确引用
    打开脚本所在对象的Inspector面板,检查绑定的TextMeshProUGUI变量是否为空(显示None)。如果是空的,把Canvas上的TMP文本组件直接拖到这个变量框里。
  • UI预制体实例化错误
    如果是用预制体做卡片,实例化时必须把父物体设为Canvas下的对象(比如一个空物体或者LayoutGroup),代码示例:
    using TMPro;
    using UnityEngine;
    using System.Collections.Generic;
    
    public class CardDisplay : MonoBehaviour
    {
        public GameObject cardPrefab; // 你的UI卡片预制体
        public Transform cardParent; // Canvas下的父物体Transform
        public List<string> textList; // 存储的文本列表
    
        void Start()
        {
            foreach (string text in textList)
            {
                GameObject newCard = Instantiate(cardPrefab, cardParent);
                TextMeshProUGUI tmpText = newCard.GetComponent<TextMeshProUGUI>();
                tmpText.text = text;
            }
        }
    }
    
  • 列表为空或索引越界
    赋值前先检查列表是否有内容,索引是否在有效范围内:
    if (textList != null && textList.Count > 0 && index >= 0 && index < textList.Count)
    {
        tmpComponent.text = textList[index];
    }
    
  • 组件类型混淆
    UI里用的是TextMeshProUGUI组件,不是3D物体的TextMeshPro。脚本里必须先加using TMPro;,变量类型要写对。

快速操作步骤

  1. 在Canvas下创建TextMeshPro - Text (UI),或制作包含TMP组件的UI卡片预制体。
  2. 脚本开头添加using TMPro;。
  3. 声明public TextMeshProUGUI displayText;变量,把TMP组件拖到这个变量上。
  4. 从列表取文本赋值,记得加空值和索引判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:01:20