Unity で Instantiate・Destroy を抑制する

カテゴリ:unity

銃弾やモブなどの使い捨てのオブジェクトはプレハブにしておき, 必要に応じて Instantiate() するのが簡単だ. そして不要になったら Destroy() で破棄する.

しかしこの方法は無駄が多い. Instantiate(),Destroy() するたびに ガーベジコレクション(以下 GC)が動作する恐れがある. さらに生成・破棄が頻繁に起こると GC1回あたりの動作が長くなる.

そこでシーンのロード中に,そのシーンで必要になる最大数のオブジェクトをあらかじめ作成しておく. そして必要になったとき再初期化して,それを再利用する. こうすれば Instantiate(),Destroy() を呼ぶことはなくなり, これらによって引き起こされる GC をなくせる.

コンテナの実装例