我正在开发一个 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 秒)向世界添加一个随机段?