默认情况下,游戏对象是否可为空?



所以我注意到我可以输入:

GameObject myObject = null;

为什么我能做到这一点?我是 C# 的新手,但我相信要定义一个可为空的变量,我应该键入 ?在类型之后。像这样:

GameObject? myObject = null;

为什么不是这样呢?

在 C# 中,引用类型的每个变量都可以分配 null,而值类型的变量始终分配了一个值,并且永远不能为 null。

也就是说,有一个名为 Nullable 引用类型的可选语言功能在 Unity 中不可用,因为 Unity 不支持 C#8.0。

在这种情况下,您可以初始化变量myObject,当您有条件地为其分配某些内容时

,可能会使用它
GameObject myObject = null;
If(some condition) { //Depending on condition instantiate different prefab
myObject = new GameObject(1);
}
else {
myObject = new GameObject(2);
}
//Do something with new object

现在,可为空的变量与方法/函数一起使用,它们可能未初始化,您可以使用它。例如,您可能会从数据库或 API 中获取空值。

同样在第一种情况下,类型是游戏对象,在第二种情况下,类型是可为空的,它有自己的方法

此外,对于整数等值类型(与类等引用类型不同(,您需要使用可为空的类型:

int? i = null;
int j = null; //this won't work;

因为 null 不是一个值,而是一个引用(或者更像是一个缺乏它(

相关内容

最新更新