【发布时间】:2016-12-11 08:27:47
【问题描述】:
您好,在我的游戏中,我有一系列包含在游戏中的所有枪支。我还有一系列游戏中可用的枪支。目前我正在遍历游戏中的所有枪支,如果它们被解锁,我会将它们添加到可用的枪支阵列中。出于某种原因,虽然我不知道如何将游戏对象添加到数组中。
public Gun[] guns;
public Gun[] availableGuns;
void Start(){
for (int i = 0; i < guns.Length; i++) {
if ((GameDataManager.publicInstance.gunAvailability & 1 << i) == 1 << i) {
availableGuns [i] = guns [i];
}
}
}
所以基本上我对这行代码有问题:
availableGuns [i] = guns [i];
因为它的效果不如我不希望可用枪位于 guns 阵列中的相同位置,我只想将它添加到可用枪阵列中。
注意:
我确实在检查器中编辑了guns[],而我根本没有在检查器中更改availableGuns[]。
【问题讨论】:
-
任何你不能使用泛型的理由,即。列出 ?
-
好吧,我更愿意将其保留为数组,但这是唯一的方法吗?我这样说是因为我需要从其他脚本中调用此列表,如果这样做,我将不得不在每个脚本中使用 System.Collections.Generic @scotru
-
没有......@Stefan
-
否,但您基本上需要重新创建 List 或 ArrayList 提供的功能。也就是说,您需要跟踪数组中使用的最后一个元素。数组在声明时具有固定长度集并且不是动态的。因此,长度将是您在创建数组时设置的长度。请参阅stackoverflow.com/questions/1056749/… 以查找最后使用的索引。您可以在这里使用一些 LINQ 扩展方法。
-
非常感谢@scotru