我正在使用基于图块的地图开发客户端 - 服务器游戏。 如果用户更改地图的可见部分(即向任何方向滚动),我会向服务器查询有关给出X,Y,宽度和高度的新部分的信息。
地图信息存储为2D数组
MapTile[,]
(MapTile是一个简单的结构)
当客户端请求新部分我想从地图图块数组中读取该部分时,为此我定义了一个方法
public MapTile[,] GetMapSection(Rectangle area)
{
[... snip validation ...]
MapTile[,] result = new MapTile[area.Width, area.Height];
for (Int32 y = 0; y < area.Height; ++y)
{
for (Int32 x = 0; x < area.Width; ++x)
{
result[x, y] = this.map[x + area.X, y + area.Y];
}
}
return result;
}
从阵列中获取该部分是否更容易(=>更易于阅读,理解和维护,不一定更快)?
答案 0 :(得分:3)
不是真的。这似乎是一种明智而简单的方法。 .NET没有提供任何内置方法的原因是,与一维数组不同,复制/组合多维数组有多种不同的方式。
你真的不会变得更快,我认为它是完全可维护的。看起来好像很固定的代码。
答案 1 :(得分:0)
我在c#
的arraycopy的MS示例中找到了一个链接