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

使用InputField脚本时出现“对象引用未设置到对象实例”错误

Unity输入框控件问题解决:对象引用错误+检视面板分配失败

问题总结

  • 运行时触发对象引用未设置到对象实例错误
  • 脚本检视面板中无法正确分配输入框对象

问题根源分析

  1. 代码逻辑偏差:你当前代码试图从InputField对象获取Text组件,但Unity的InputField控件的输入文本直接存储在自身组件的text属性中,而非挂载在InputField对象上的Text组件(默认InputField的子Text仅负责显示,通过组件属性访问更可靠)。
  2. 检视面板分配混淆:你可能错误拖入了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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:17:25