为什么有时您必须创建一个新列表,而有时却不在Unity中?

时间:2018-10-10 23:16:20

标签: list unity3d

所以我将一个项目升级到另一个。

在第一个项目中,预制件已经在现场,我手动在其上设置所有组件和脚本。

在第二个中,预制件是在运行时通过脚本创建的,我必须通过脚本添加所有内容。

直到获得公开清单的脚本之前,我并没有什么麻烦。代码运行时,每次调用列表时都会给我一个空引用。

因此,在经过反复试验和错误之后,我发现,不仅要声明该列表(无论是公共列表,还是其他),我都必须实例化它(公共列表,无论=新列表)。

我很高兴找到解决方案,但我不理解,这困扰着我。为什么我必须在第二个项目中创建一个新列表?

3 个答案:

答案 0 :(得分:1)

声明列表意味着您创建的类具有列表,但默认情况下仍然没有值。为了使列表可用,您必须通过分配= new List<Data>来创建它的实例。

答案 1 :(得分:1)

当您在Unity编辑器中手动向游戏对象添加脚本时,Unity会将该公共列表初始化为空列表。然后它将序列化该空列表。实例化手动创建的预制件时,它已经包含了编辑器序列化的空列表。

答案 2 :(得分:0)

说您有图片(参考)或在您的地方(实例)之间的区别是这样想的。可以说列表不是列表,它只是一个整数。

我可以说 int i;

并且我有一个引用,但是引用为空,即它没有值。

但是如果我说 int i = 0;

它现在具有价值,没有零,我无法对i进行操作,因为计算机不知道如何处理它。...

从根本上说List<Item> list;

而不是列表列表= new List<Item>()

表示您已经声明了该变量,并在内存中分配了空间,但是在您赋值之前,它什么都没有。希望这会有所帮助。

您不能在C#中使用未初始化的变量。您可以使用其类型的默认值初始化变量。您还可以使用类型的默认值来指定方法的可选参数的默认值。