このサンプルコードは、敵キャラクターのオブジェクトをスポーンする際に、
事前にリストを確保し、再利用することでGCの回避を図る例です。
クリックすると開きます
// 配列やリストの事前確保や再利用を行う
private List<GameObject> enemies = new List<GameObject>(100);
public void SpawnEnemies(int numberOfEnemies)
{
for (int i = 0; i < numberOfEnemies; i++)
{
if (i >= enemies.Count)
{
enemies.Add(Instantiate(enemyPrefab));
}
enemies[i].SetActive(true);
}
}
このコードでは、まず100個の敵オブジェクトを格納できるリストを作成しています。
そして、SpawnEnemiesメソッドで指定された数の敵をスポーンさせる際、リストの中に既に存在するオブジェクトを再利用します。
リストに不足分がある場合のみ、新しい敵オブジェクトをインスタンス化してリストに追加します。
これにより、
敵オブジェクトの生成と破棄を繰り返すことで発生するGCのオーバーヘッドを最小限に抑えることができます。
これらのサンプルコードを適用することでゲーム開発において、ガベージコレクションの回避によりパフォーマンスが向上します。
特に、リアルタイムの処理が求められるゲームでは、こうした最適化が
プレイヤーに快適なゲームプレイ体験を提供する上で非常に重要です。
GCの回避を意識したコーディングを行うことで、
効率的で高品質なコードを作成することができるようになります。