気ままなUnityエンジニアブログ

新米Unityエンジニアが送る解説アウトプットブログです。Twitter : @UjinUnity

MENU

【Unity】ObjectPoolとFactoryパターンの組み合わせ

スポンサーリンク

wojtek.hatenablog.com

以前記事にした「Factoryパターン 」ですが、今回はUniRxのObjectPoolと併合して使用してみます。

 

f:id:Wojtek:20190611083918p:plain

完成系はこちらになります。

this.m_BulletFactoryは 「BulletFactory」クラスになります。Bullet系のクラス生成を担当します。

下に行に .Core というものがあります。

この「Core」はBulletの実体クラスです。 

bulletPool.Rentは、ObjectPoolの派生クラスの機能です。

Poolされているオブジェクトを代入してくれます。

これによってFactoryでBullet系の派生クラスを生成し、ObjectPoolで実体を代入するというプロセスを両立できるようになりました。

 

ObjectPoolは端的にいうと「大量に使用するオブジェクトを作り置きして、使い回しができる」ようにするものです。

例えばEffectなどは大量に画像やオブジェクトを使いますよね。

それらを使う度にInstantiateしていたらめちゃくちゃ負荷がかかります(ゲームが重くなる)。

それを防ぐための機能です。めっちゃ省エネです。