私は2D無限横スクロールゲームを開発しています。プレーヤーが右に移動するにつれて、シームレスで「無限」になるように、タイルのランダムなセグメントをワールドに追加し続けます。以下に示すように、ビューポートの右側が青い領域に達すると、ランダムセグメントが追加されます。
私のやり方は現在うまく機能しています。問題は、それを行うためのはるかに効率的な方法があるように感じることです。
ワールドのタイルは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秒ごとに)どのように管理する必要がありますか?