ICollidableインターフェースを実装するエンティティのリストがあります。このインターフェースは、エンティティ間の衝突を解決するために使用されます。したがって、私のエンティティは次のとおりです。
- プレイヤー
- 敵
- 発射物
- アイテム
- タイル
ゲームの更新(約60 t / s)ごとに、リストをクリアし、ゲームの状態に基づいて現在のエンティティを追加しています。私はこれを次の方法で達成しています:
collidableEntities.Clear();
collidableEntities.AddRange(players);
collidableEntities.AddRange(enemies);
collidableEntities.AddRange(projectiles);
collidableEntities.AddRange(items);
collidableEntities.AddRange(camera.VisibleTiles);
表示されているタイルをリストに追加するまで、すべて正常に機能します。ゲームループを実行してから最初の約1〜2秒間は、描画を遅らせる目に見える問題が発生します(レンダリングにジッターが見られるようになります)。文字通り、タイルを追加する行を削除/追加して、ジッターが発生するのと発生しないのを確認できるので、その行に絞り込みました。
私の質問は、なぜですか?VisibleTilesのリストは約450〜500タイルであるため、実際にはそれほど多くのデータではありません。各タイルには、何がどこにレンダリングされるかを決定するためのTexture2D(画像)とVector2(位置)が含まれています。ずっと見ていきますが、頭のてっぺんからは、最初の1〜2秒だけがしゃっくりするのに、その後はスムーズになっている理由がわかりません。
アドバイスをいただければ幸いです。
アップデート
初期容量をおおよその要素数まで増やしてみましたが、違いは見られませんでした。
アップデート
リクエストに応じて、カメラのコードは次のとおりです。VisibleTiles
public List<Tile>
{
get { return this.visibleTiles; }
}