【Unity】ObjectPoolとFactoryパターンの組み合わせ
スポンサーリンク
以前記事にした「Factoryパターン 」ですが、今回はUniRxのObjectPoolと併合して使用してみます。
完成系はこちらになります。
this.m_BulletFactoryは 「BulletFactory」クラスになります。Bullet系のクラス生成を担当します。
下に行に .Core というものがあります。
この「Core」はBulletの実体クラスです。
bulletPool.Rentは、ObjectPoolの派生クラスの機能です。
Poolされているオブジェクトを代入してくれます。
これによってFactoryでBullet系の派生クラスを生成し、ObjectPoolで実体を代入するというプロセスを両立できるようになりました。
ObjectPoolは端的にいうと「大量に使用するオブジェクトを作り置きして、使い回しができる」ようにするものです。
例えばEffectなどは大量に画像やオブジェクトを使いますよね。
それらを使う度にInstantiateしていたらめちゃくちゃ負荷がかかります(ゲームが重くなる)。
それを防ぐための機能です。めっちゃ省エネです。