[デザインパターン]ObjectPool
ひろたか('Д')です。先月は忙しく、久々の投稿となります。
さて今回は前回に引き続きデザインパターンの一つをご紹介いたします。
今回はご紹介するのは「ObjectPool」です。
目次
環境
今回はUnity2017.4.0f1を使用しています。
ObjectPoolとは
ObjectPoolは複数のオブジェクトの生成と破棄によるコストを押さえるために使用されます。
オブジェクトが必要になるときに新しく生成し、不要になったら破棄するのではなく、実行時にある程度生成しておき、不要になったらオブジェクトを破棄せずに再利用することで、生成や破棄によるコストを押さえることが出来ます。
使用例としてはシューティングゲームの弾のように大量に使い、寿命の短いモノによく使われます。
例
弾プレハブを生成するクラスとそこから未使用の弾を取得し、弾を撃つスクリプト2つのサンプルです。
gistc059e1c69a30102941bcf0000cd22527
Bulletは必要・不要になった際にActiveを変更しています。こうすることで生成・破棄のコストを削減できます。
最後に
今回の実装ではBulletのみにしか対応していませんが、基底クラスから派生させるなどすれば様々なオブジェクトに対応させることが出来ます。皆さんも是非使ってみてください。
参考サイト