使用InputField脚本时出现“对象引用未设置到对象实例”错误
Unity输入框控件问题解决:对象引用错误+检视面板分配失败
问题总结
- 运行时触发
对象引用未设置到对象实例错误 - 脚本检视面板中无法正确分配输入框对象
问题根源分析
- 代码逻辑偏差:你当前代码试图从InputField对象获取
Text组件,但Unity的InputField控件的输入文本直接存储在自身组件的text属性中,而非挂载在InputField对象上的Text组件(默认InputField的子Text仅负责显示,通过组件属性访问更可靠)。 - 检视面板分配混淆:你可能错误拖入了InputField的子Text对象,或是字段类型不匹配导致分配异常。
修正步骤
1. 修改脚本代码
直接声明InputField类型字段,简化文本获取逻辑:
using UnityEngine; using UnityEngine.UI; public class UserInput : MonoBehaviour { // 直接声明为InputField类型,无需通过GameObject中转 public InputField inputField; public string msg; public void GetInput() { // 直接访问InputField组件的text属性 msg = inputField.text; } }
若坚持使用GameObject类型字段,可调整文本获取逻辑:
// 仅当保留GameObject字段时使用 msg = inputField.GetComponent<InputField>().text;
2. 正确分配检视面板字段
- 选中挂载
UserInput脚本的空GameObject - 在检视面板的
User Input组件中,找到Input Field字段 - 直接将Hierarchy中的InputField对象拖入该字段(不要拖入InputField下的子Text对象)
3. 验证Button调用设置
确保Button的点击事件绑定正确:
- 选中Button对象,在检视面板的
Button组件中找到On Click ()列表 - 点击
+号,将挂载UserInput脚本的空GameObject拖入对象栏 - 在右侧下拉菜单中选择
UserInput -> GetInput()方法
额外排查点
若仍出现对象引用错误,检查:
- InputField对象是否被意外删除或禁用
- 脚本是否确实挂载到了目标GameObject上
- Button绑定的方法是否指向了正确的脚本实例
内容的提问来源于stack exchange,提问作者Twelve Legions
相关产品推荐
相关产品推荐

