【解决】NullReferenceException: Object reference not set to an instance of an object XXXX

游戏引擎:Unity
版本:2019.4.6f1 【2017版本以上均可】
编译平台:Visual Studio 2019

问题截图

在这里插入图片描述

问题描述

描述
原 文 [报错]NullReferenceException: Object reference not set to an instance of an object XXX
中 译 空引用异常:对象引用未设置为对象的实例XXXX

解决方案

  检查脚本逻辑问题,常见如 GetComponent<>()FindObjectsOfType()等方法,来给声明的变量给予赋值。多数情况下我们声明的变量并未成功赋值,即 查找不到对应类型的数据。这个变量亦可能是局部变量获取数值失败。
  存在部分情况下,双击Unity的Conslo控制台,不会直接弹出问题处的情况,根据其提供的脚本对象逐一使用Debug.Log()排查,或配合Visual Studio提供的 “附加到Unity”调试功能,进行排查代码逻辑是否有误。

案例:未被赋值的AudioSource

  如上面报错图第二行所示:
  Object reference not set to an instance of an objectSoundManager.ChangeBgmVolume (System.Single value)
  错误信息指明问题出自于AudioManager.cs脚本内的ChangeBgmVolume()方法,如下图所示为ChangeBgmVolume()方法:
【解决】NullReferenceException: Object reference not set to an instance of an object XXXX_第1张图片
  其中 soundVO:声音配置文件,bgm:游戏中的AudioSource组件。soudVO声音文件在初始化时已经配置。经排查后,发现AudioManager.cs中仅声明了AudioSource类型的存储变量bgm,但并未具体赋值。在Unity编译中出null,现如下图所示:
在这里插入图片描述
  正因为导致Unity不清楚这个AudioSource是谁。所以我们需要拖拽一个AudioSource组件给上图,或通过代码GetComponent()来在Start()获取组件。

你可能感兴趣的:(Unity,常见报错问题解决方案,unity)