c# - 刚刚分配对象时的 Unity NullReferenceException
问题描述
我有一个正在实例化的 GameObject:
var face = Instantiate(waveConfigs[waveNumber].getFacePrefab(), waypoint.position, Quaternion.identity, FindObjectOfType<Canvas>().transform);
Debug.Log(face, this);
faces.Add(face);
faces
上面是这样声明的:
List<GameObject> faces;
对象被实例化,DebugLog如下:
Smile(Clone) (UnityEngine.GameObject)
UnityEngine.Debug:Log(Object)
FaceSpawner:SpawnFaces(Int32) (at Assets/Scripts/FaceSpawner.cs:30)
FaceSpawner:Start() (at Assets/Scripts/FaceSpawner.cs:16)
(哪个是 Debug.Log(face, this);)
然后就在那之后,当我打电话时faces.Add()
:
NullReferenceException: Object reference not set to an instance of an object
FaceSpawner.SpawnFaces (System.Int32 waveNumber) (at Assets/Scripts/FaceSpawner.cs:31)
FaceSpawner.Start () (at Assets/Scripts/FaceSpawner.cs:16)
我不明白,我实际上只是分配了这个变量,它起作用了,它出现在画布上,我可以将它从调试日志中注销,然后当我尝试将它添加到列表时,我得到一个 NullReference。这里发生了什么?
解决方案
你的faces
容器也被初始化了List<GameObject> faces = new List<GameObject>()
吗?
问题是您正在尝试访问Add
尚未创建的容器,即尚未为其分配内存且尚未调用其构造函数的容器。所以基本上你试图Add
在不存在的对象上调用函数。
推荐阅读
- php - Laravel:PHP 解析错误:语法错误,意外的“?” 在 /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 第 500 行
- javascript - 我不明白为什么我必须以特定方式查询 MongoDB 集合(点与括号表示法)
- .net - 用于检查对象是否成功添加到表中的测试方法
- javascript - React 本机 opentok 发布者未显示
- interactive-brokers - 盈透证券:如何在 TWS 中为我的演示会话获取账户代码?
- azure - 无法通过 ssh 连接到 Azure VM
- javascript - 如何在下拉列表中添加无字段?
- git - 在 Visual Studio Professional 2017 中提交单个文件
- sql - 比较 2 个表
- python - 如何将列表转换为以毫秒为单位的日期时间?