[Unity C#]オブジェクト初回作成使いまわし統括のすすめ

 

Unityでゲームを作るときに例えば敵キャラとかアイテムとか

複数同じものを生成して量産して使っていく場合安易にDestory Instantiateを多用するのは処理速度低下やメモリ不足による強制終了を誘発して危険!

あらかじめいくらか作っておき、Activeをfalseにする方法がオススメです。

例えばこんな感じ。

private List<EnemyBase> enemyList;

public const int MAX_ENEMY = 10;

void Start ()
{

//初回作成
enemyList= new List<enemyList>();
for (int i = 0; i < MAX_ENEMY ; i++)
{
EnemyBase enemy= Instantiate(_originalSuiboku) as EnemyBase;
enemy.transform.parent = transform;
enemy.gameObject.SetActive(false);
enemyList.Add(enemy);
}

}
public EnemyBase CreateEnemy()
{

foreach(var enemy in enemyList)
{
if(!enemy.gameObject.activeSelf)
{

enemy.gameObject.SetActive(true);

return enemy;
}
}

return null;

}

敵が死んだりしたらactiveをfalseにしてやるわけですね。

敵を統括管理するEnemyManager的なものをつくりそこで敵の作成・全削除などの管理をするのがいい感じです。

Unity画面上で見るとこんな感じです

test

 

バトルシーンが終わったらいったんはいらないのですべてDestroyするとメモリの節約にもなります。

敵が死んだときみたいなEventもEnemyManagerで仕込んだりすると管理がしやすそうです。

敵に限らずエフェクト、射撃などにも同じことが言えます。

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。