Unity获取Input Field文本时报错GameObject无text定义如何解决
错误原因
你声明的UsernameInput为GameObject类型,text是输入框组件的专属属性,并非GameObject本身自带的属性,因此直接调用会触发找不到定义的报错。
解决方案
分两种常用处理方式:
方案一:直接修改变量类型(更推荐,性能更好)
- 先在脚本头部引入对应命名空间:
- 若使用传统UGUI输入框,添加
using UnityEngine.UI; - 若使用TextMeshPro版本的TMP输入框(Unity 2020之后版本默认创建的输入框多为此类),添加
using TMPro;
- 若使用传统UGUI输入框,添加
- 修改变量声明:
- UGUI输入框改为
[SerializeField] private InputField UsernameInput; - TMP输入框改为
[SerializeField] private TMP_InputField UsernameInput;
- UGUI输入框改为
- 原有调用代码
Debug.Log(UsernameInput.text);无需修改,Inspector面板重新关联对应的输入框对象即可正常运行。
- 先在脚本头部引入对应命名空间:
方案二:保留GameObject类型声明,手动获取组件
- 同上先引入对应命名空间
- 修改调用代码:
- UGUI输入框改为
Debug.Log(UsernameInput.GetComponent<InputField>().text); - TMP输入框改为
Debug.Log(UsernameInput.GetComponent<TMP_InputField>().text);
- UGUI输入框改为
注意事项
- 关联到
UsernameInput的对象必须挂载了对应输入框组件,否则调用会报空引用错误 - 不要重复添加不需要的命名空间,避免编译冲突
内容的提问来源于stack exchange,提问作者michael
相关产品推荐
相关产品推荐

