Unity中点击按钮后如何获取其TextMeshPro文本并与字符串对比?
问题解决:获取按钮的TextMeshPro文本并对比字符串
你的代码核心问题是错误调用了ToString()方法获取文本内容:GetComponentInChildren<TMPro.TMP_Text>()返回的是TMP_Text组件对象,直接调用ToString()得到的是组件的类型标识字符串(比如TMPro.TMP_Text),而非按钮上显示的实际文本。
修正后的代码
public void clicked() { Debug.Log("Timer done"); secondsLeft = 0; timerOn = false; questionUI.SetActive(false); Paused = false; //关闭问题界面 // 获取子物体中的TMP_Text组件,并读取其文本内容 TMPro.TMP_Text textComponent = GetComponentInChildren<TMPro.TMP_Text>(); string answer = textComponent != null ? textComponent.text : string.Empty; if (questions[0] == answer) { PlayerQuests.points += 1000; } }
关键修正点
- 先获取TMP_Text组件实例,增加空引用判断,避免找不到组件时抛出
NullReferenceException - 使用
textComponent.text属性获取按钮上显示的实际文本内容,替代错误的ToString()调用 - 空值 fallback 为
string.Empty,确保后续字符串对比逻辑不会因为空组件报错
内容的提问来源于stack exchange,提问作者Lyiam Mendoza
相关产品推荐
相关产品推荐

