从List <object> </object>中的索引处获取对象

时间:2014-04-03 10:13:41

标签: c# list object multidimensional-array

我正在尝试制作2D RPG游戏,并希望使用List&lt;列表与LT;对象&gt; &GT;制作一个网格,我在其中存储不同类型的世界对象。唯一的问题是,我不知道如何从这个多维列表中获取东西。

下面的代码创建了一个多维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]无效。

1 个答案:

答案 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());
    }
}