所以这至少与你在Minecraft游戏中遇到的情况类似。
基本上我有一个你反对的游戏,我想根据世界上的位置创建和销毁对象。
我觉得我应该使用数组,因为我可以对数组进行排序并通过
快速搜索它array[spawnposition] = gameobject
当我创建一个对象来存储该对象时,它立即存放在该位置的正确排序位置
然后使用精确的spawn位置进行修改和删除。
问题是,甚至100 X 100 X 100区域是一个非常大的阵列。
所以我不确定如何最好地缓解这种情况。 我认为它主要是问题的立方体,所以我想如果我只是限制了一个维度,我可以进一步得到更多,但我很好奇像我的世界如何处理大规模的世界。
我确信他们会将数组分块并创建数组数组以导航到正确的数组。
但是我想知道是否有更好的方法,例如,使得空值可能不占用空间。因此,只有当我为数组赋值时,它才能找到它的空间,因此非常大的数组实际上只有实际项目的数量一样大,不是潜在的,但仍允许像实际数组一样快速访问
基本上我会使用List作为动态的例子,但是我会丢失固定数组的索引器访问权限,这样我就可以在不进行搜索的情况下快速访问和检索内容。
答案 0 :(得分:8)
简短版本:
Arrays
List
ArrayLists
我总是建议使用List
s。数组之间没有明显的性能差异,您具有IEnumerable
的全部功能,并且它们是强类型的(因此您不使用ArrayList
)。
您可以使用带有索引号的List
访问单个项目:
List<string> items = new List<string>();
string someItem = items[4]; //assuming these items already exist
items[5] = "asdf";
但是,选择使用哪种方式完全取决于您。您可以阅读Arrays
,Lists
和ArrayLists
,然后从那里设计您的approch。