You need to enable JavaScript to run this app. Unity C#调用AddForce报空引用错误 悬浮车无法正常悬浮
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#调用AddForce报空引用错误 悬浮车无法正常悬浮

错误原因

你遇到的NullReferenceException是因为代码中声明的私有NiceCar(也就是Rigidbody的别名)类型变量carMain没有被初始化赋值,运行时处于空引用状态,调用AddForce方法时就会触发空引用异常。

修复方案

你可以选择以下任意一种方式给carMain赋值:

  • 方式一:自动挂载获取当前物体的Rigidbody组件
    在Awake或者Start生命周期方法中添加获取组件的逻辑,代码如下:
    void Awake()
    {
        // 尝试从当前挂载脚本的物体上获取Rigidbody组件
        carMain = GetComponent<NiceCar>();
        // 可以加个校验,没有组件的时候主动抛出明确提示,方便排查
        if(carMain == null)
        {
            Debug.LogError("当前物体没有挂载Rigidbody组件,请检查!", gameObject);
        }
    }
    
    注意要先给你的悬浮车物体挂载Rigidbody组件,否则还是会取不到值。
  • 方式二:把carMain改成public变量,在Inspector面板手动拖拽赋值
    把原来的private NiceCar carMain;改成public NiceCar carMain;,回到Unity编辑器,选中挂载了HoverMotor脚本的物体,把带Rigidbody的车物体拖到Inspector面板对应carMain的参数槽即可。
额外优化建议
  • 你代码里用到了别名using NiceCar = UnityEngine.Rigidbody;,如果团队没有特殊要求的话,直接用Rigidbody写可读性会更高,也方便后续其他开发者理解代码。
  • 调用carMain.AddForce之前可以加一层非空判断,避免极端情况还是触发空引用:
    if(carMain != null)
    {
        carMain.AddForce(appliedHoverForce, ForceMode.Acceleration);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:48:04