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

Unity报UnassignedReferenceException:Inspector已赋值变量仍抛出异常

解决方案

这个报错的核心原因是存在至少一个挂载了PlayerMovement脚本的GameObject,它的playerPhysics变量未被赋值,你看到功能正常是因为你赋值过的那个脚本实例在正常运行,报错是其他未正确配置的实例抛出的,按以下步骤排查即可:

  • 点击控制台的报错条目,Unity会自动定位到对应出问题的GameObject,检查该对象的PlayerMovement组件的playerPhysics字段是否为空,为空就补上对应Rigidbody引用,不需要的多余对象直接删除即可。
  • 排查PlayerMovement脚本的生命周期代码,确认你没有在Awake()、Start()或者其他执行时机早于报错位置的逻辑里,手动把playerPhysics赋值为null。你也可以在访问playerPhysics的代码前加一行调试语句Debug.Log(playerPhysics, this),运行后点击日志就能确认是哪个对象的变量为空。
  • 如果确认所有实例都已正确赋值、代码也无相关修改,属于Unity序列化缓存异常,做一次缓存清理即可:
    1. 完全关闭Unity编辑器
    2. 删除项目根目录下的Library和Temp文件夹
    3. 重新启动Unity,等待项目资源重新编译完成
  • 你也可以直接加自动兜底逻辑避免这个问题,在PlayerMovement的Awake()方法里添加如下代码,不需要再手动在Inspector赋值:
void Awake()
{
    if (playerPhysics == null)
    {
        playerPhysics = GetComponent<Rigidbody>();
    }
}

内容的提问来源于stack exchange,提问作者Brenbold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:12:02