对于我的图 block 游戏,我选择使用 4D 嵌套列表系统。
- 第一维 - 图层(背景和前景,但可能还有其他)
- 第二维和第三维 - 二维网格,基于图 block 的游戏的经典
- 第四维 - 网格中的图 block 包含的对象(例如,在 rougelike 中,多个项目可以掉落在同一个地砖上
我有确切的图层数以及 map 的高度和宽度。用这些数字初始化前三个维度,然后用空对象列表填充每个“图 block ”(即第四个维度)的好方法是什么?
这里有一些代码可以更好地说明它:
List<List<List<List<GameObject>>>> Grid;
public readonly int Layers, Height, Width;
最佳答案
您可以使用 linq 来完成此操作:
List<List<List<List<GameObject>>>> Grid;
Grid = Enumerable.Range(0, Layers).Select(l =>
Enumerable.Range(0, Height).Select(h =>
Enumerable.Range(0, Width).Select(w =>
new List<GameObject>()).ToList()).ToList()).ToList();
相同的代码可用于生成数组的数组(或更适合您需求的任何组合),即:
List<GameObject>[][][] Grid;
Grid = Enumerable.Range(0, Layers).Select(l =>
Enumerable.Range(0, Height).Select(h =>
Enumerable.Range(0, Width).Select(w =>
new List<GameObject>()).ToArray()).ToArray()).ToArray();
关于c# - 用空元素初始化多维列表的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809450/