我正在尝试制作2D RPG游戏,并希望使用List<列表与LT;对象> >制作一个网格,我在其中存储不同类型的世界对象。唯一的问题是,我不知道如何从这个多维列表中获取东西。
下面的代码创建了一个多维List并用'Dirt'对象填充它(虽然对象[i]不起作用,这是我的问题)。
public List<List<Object>> objects;
this.mapWidth = 36;
this.mapHeight = 21;
this.objects = new List<List<Object>>();
for (int y = 0; y < mapHeight; y++)
{
objects.Add(new List<Object>());
}
for (var i = 0; i < mapWidth; i++)
{
for (var j = 0; j < mapHeight; j++)
{
objects[i].Add(new Dirt());
}
}
球员有一个位置,例如18,11,位于此地图/多维列表的中间。我想检查一下他周围的“瓷砖”,所以我只需要在地图上更新这些东西。列表[y] [x]无效。
答案 0 :(得分:1)
我认为您的初始构造代码不正确。您似乎正在构建网格以包含mapHeight
行和 mapheight
列。将构造代码重写为:
for (var y = 0; y < mapHeight; y++)
{
objects.Add(new List<Object>());
for (var x = 0; x < mapWidth; x++)
{
objects[y].Add(new Dirt());
}
}
编辑:我认为这将生成一个表格,您可以通过以下方式实现查询:Object gridEntry = objects[y][x];
EDITx2:如果您愿意,可以将创建代码重写为:
for (var y = 0; y < mapHeight; y++)
{
List<Object> currentRow = new List<Object>();
objects.Add(currentRow);
for (var x = 0; x < mapWidth; x++)
{
currentRow.Add(new Dirt());
}
}