1
我正在开发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秒)将一个随机分段添加到世界?
'队列'可能是最好的游戏,因为保证了更好的内存局部性和它不会产生垃圾的事实(提供'瓷砖'是一种值类型)。 – 2013-02-18 08:08:37