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

Unity调用另一脚本内方法时出现空引用异常怎么解决

问题根因

NullReferenceException报错的核心是TileManager脚本中声明的addScore字段未关联场景中实际存在的ScoreAction脚本实例。

解决方案

方案1:Inspector手动赋值(最稳妥,无运行时性能损耗)

  • 选中场景中挂载TileManager脚本的Tile A对象,在Inspector面板找到TileManager组件的addScore公开字段
  • 将Hierarchy面板中名为Score的TextMeshPro对象直接拖拽到该字段的输入框中,Unity会自动匹配挂载在该对象上的ScoreAction脚本实例完成绑定

方案2:代码动态绑定(适合需要动态生成对象的场景)

在TileManager脚本的Awake或Start生命周期方法中添加查找赋值逻辑,保证赋值操作早于addScore.DummyMethod()的调用:

private void Awake()
{
    // 方式1:按对象名查找后取组件,注意对象名大小写要和场景完全一致
    addScore = GameObject.Find("Score").GetComponent<ScoreAction>();

    // 方式2:如果场景中只有一个ScoreAction实例,可直接用类型查找
    // addScore = FindObjectOfType<ScoreAction>();
}

报错排查清单

如果完成上述操作后仍报错,按以下顺序核对:

  • 确认Score对象上确实挂载了ScoreAction脚本,没有漏挂、挂错对象的问题
  • 确认addScore.DummyMethod()的调用时机晚于赋值操作:如果调用逻辑写在Awake中,赋值逻辑就不能写在Start中(Unity生命周期中Awake执行顺序早于Start)
  • 确认Score对象未被隐藏:GameObject.Find默认无法查找activeSelf为false的对象,隐藏对象可改用标签查找、全局单例引用等方式处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:04