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

Unity中NullReferenceException异常求助:空引用问题未定位

解决Unity中的NullReferenceException报错

报错信息:

NullReferenceException: Object reference not set to an instance of an object UnitClick.Update ()

问题出在代码中Ray ray = myCam.ScreenPointToRay(Input.mousePosition);这一行,说明myCam变量为空,无法调用其方法。以下是具体排查和解决步骤:

1. 修复myCam为空的问题

myCam通过Camera.main赋值,而Camera.main仅会返回带有MainCamera标签的相机,常见原因及解决:

  • 场景中没有相机添加MainCamera标签:选中你的相机,在Inspector面板的Tag下拉菜单中选择MainCamera。
  • 场景中有多个相机带MainCamera标签:确保只有一个相机使用该标签,避免Camera.main返回结果异常。
  • 相机是动态生成的:Start方法执行时相机尚未创建,此时Camera.main会返回null。可以改用更可靠的获取方式:
    void Start()
    {
        // 优先取MainCamera,没有则取场景中第一个相机
        myCam = Camera.main ?? FindObjectOfType<Camera>();
        // 强制检查,避免后续静默出错
        Debug.Assert(myCam != null, "场景中未找到可用相机,请检查相机设置!");
    }
    
  • 若你将myCam改为public属性:必须在Inspector面板中手动拖入场景中的相机对象,否则变量依然为空。

2. 额外排查潜在的空引用点

后续代码中调用UnitSelections.Instance的方法,如果该单例未正确初始化,也会触发相同报错:

  • 检查UnitSelections类是否正确实现单例:确保在Awake方法中赋值Instance = this,且该脚本已挂载到场景中持久存在的GameObject上。
  • 确认UnitSelections的实例未被意外销毁(比如场景切换时未保留)。

你提到重写代码、修改射线逻辑无效,核心原因还是变量未正确初始化,按上述步骤逐一排查即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:27:34