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

Unity乒乓球游戏计分代码报NullReferenceException错误是什么原因?

报错原因及解决方法

你遇到的NullReferenceException空引用报错,在你当前的代码里只有两个触发可能,对应解决方法如下:

  • ball对象为空:你在Start方法中通过GameObject.Find("Ball")查找场景内的小球,要求场景里的小球对象名称必须和引号内的内容完全一致(大小写、前后空格都不能有偏差),如果名称不匹配、对象未加载/已被销毁,都会返回空值,后续Update中调用ball.transform就会触发报错。
    解决方法:要么核对小球对象的名称和查找字符串完全一致,要么直接把层级面板里的小球对象拖到该脚本挂载物体的Inspector面板对应的ball变量栏中手动赋值,手动赋值的稳定性远高于运行时查找。
  • ScoreBoard变量为空:ScoreBoard是public类型的Text变量,如果你没有在Inspector面板中把对应显示分数的UI Text组件拖到对应变量栏赋值,该变量默认就是空值,执行到ScoreBoard.text = ...时就会触发报错。
    解决方法:打开脚本挂载物体的Inspector面板,找到ScoreBoard变量对应的输入槽,把用来显示分数的Text组件拖进去完成赋值即可。

你也可以在Update方法最开头添加空校验代码做防护,避免出现报错直接中断运行:

void Update()
{
    // 空校验,任意变量为空就直接跳出当前帧的执行
    if (ball == null || ScoreBoard == null)
    {
        return;
    }
    // 后面保留你原来的逻辑
    if (ball.transform.position.x >= 35f)
    {
        Bat_1_Score++;
    }
    if (ball.transform.position.x <= -35f)
    {
        Bat_2_Score++;
    }

    ScoreBoard.text = Bat_1_Score.ToString() + " - " + Bat_2_Score.ToString();

    print(Bat_1_Score + " , " + Bat_2_Score);
}

内容的提问来源于stack exchange,提问作者Linedol trainer channel gammin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:51:01