Unity 2020.2 中如何通过 C# 脚本修改 UI Text 与 TextMeshPro 文本?
问题原因
你当前的代码是针对Unity原生UGUI的Text组件编写的,但你实际使用的是TextMeshPro组件,二者类型不匹配,所以无法生效。
修复步骤
- 补充TextMeshPro的专属命名空间引用
using TMPro;,没有其他UGUI组件需求的话可以删除using UnityEngine.UI; - 把变量定义的类型从
Text替换为TextMeshProUGUI(UI层级的TextMeshPro组件均为此类型) - 把
GetComponent的泛型参数同步修改为TextMeshProUGUI - 确保脚本挂载在对应TextMeshPro UI对象上,或者直接在Inspector面板把目标TMP组件拖到
coins变量的赋值框,后者可以省略Start里的自动获取代码
修改后完整代码
using UnityEngine; using TMPro; public class Coins : MonoBehaviour { public TextMeshProUGUI coins; void Start() { // 脚本挂在TMP组件同对象上时可以用这个自动获取,手动赋值的情况下可以删除这段代码 coins = GetComponent<TextMeshProUGUI>(); } void Update() { coins.text = "你要显示的文本内容"; } }
额外注意事项
如果代码提示找不到TMPro命名空间,打开Package Manager确认已经安装Text Mesh Pro官方包,安装完成后根据提示导入TMP Essential Resources资源即可。从Unity 2018升级上来的项目注意删除旧版本手动导入的TMP插件文件,避免和Package Manager的官方版本产生命名冲突。
内容的提问来源于stack exchange,提问作者Avarage cat enjoyer
相关产品推荐
相关产品推荐

