管理频繁附加数据的最有效方法

时间:2013-02-17 06:04:59

标签: c# arrays list xna-4.0

我正在开发一款2D无限侧滚动游戏。当玩家向右移动时,我会继续向世界附加一段随机区域,以使其无缝且“无限”。如下图所示,当视口的右侧到达蓝色区域时,会附加随机段。

Illustration

我现在这样做的方式很好。问题是我觉得有一种更有效的方法。

世界的瓷砖以2D数组表示,并且附加到世界的功能看起来像这样。

Array.Resize<Tile[]>(ref world.Tiles, newWidth);

for (int x = 0; x < newSegment.Width; x++) 
{
    world.Tiles[oldWidth + x] = newSegment.Tiles[x];
}

我理解List<T>非常适合动态的对象集合,但请记住,可能会有千个列。如果我正确地假设这一点,很多列表项特别是嵌套会产生很多开销。出于这个原因,我最初使用数组。

我目前的方法是否效率低下?如果是这样,我应该如何经常管理(平均每10-15秒)向世界追加一个随机段?

1 个答案:

答案 0 :(得分:2)

LinkedList <T> 怎么样?在您的情况下LinkedList<Tile>

或者甚至更好,Queue<T>?如果您所做的只是排队方块并移动一个方向(不需要/能够转到上一个方块),那么队列可能是最好的开销。)

使用集合,LinkedList或Queue,无需调整数组大小,也不需要自己调整大小。内存管理是在内部以高效的方式完成的。