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

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

MENU

【Unity】FactoryMethodパターンで弾の生産を簡略化

スポンサーリンク

シューティングゲームなどを作成していると、多種多様な「弾」を実装したくなります!

しかし、種類ごとに生産→稼働→廃棄〜のプロセスを1つのスクリプトで実装するのはコードは山盛りになるし保守性も劣悪になってしまいます。

そこでデザインパターンの1つである「FactoryMethod」を活用することで、生産部分を管理しやすくなるんですよね。

実際に使って行きましょう。

 FactoryMethodパターン とは

Factoryパターンは耳にする機会が多いと思いますが、端的に言うと「オブジェクトの生成を簡略化する」ノウハウです。

Factoryとは「工場」と言う意味で、工場から様々な部品(オブジェクト)を生成するイメージになります。

今回紹介するFactoryMethodパターンは

 生成するオブジェクトごとに工場を作成することで、オブジェクト事の生成を管理しやすくする 狙いがあります。

 

f:id:Wojtek:20190530080139p:plain

実際の処理をみていきましょう。

こちらが「工場」のベースとなる抽象化クラスです。

f:id:Wojtek:20190530080256p:plain

BaseBullet は生成するオブジェクトの抽象化クラスになります。

今回は弾を作成するため、基本要素はここに詰め込みます。

 

f:id:Wojtek:20190530080358p:plain

こちらが具現化した工場クラスです。

CreateProductのNormalBulletは、BaseBulletを継承したバレットクラスの一種です。

このBulletFactoryは「NormalBullet」生成専用のクラスとなっております。

別のバレット派生クラスを生成する場合は、別途ファクトリークラスを作る必要があります。

 

呼び出し方

f:id:Wojtek:20190530080804p:plain

実際に使用してみましょう。

まずはファクトリークラスを生成します。

その後、使用する弾を工場から取得します。

生成「Factory」→運用「別クラス」

という工程になるので、保守性が高まり、種類を増やすのも容易になりました。

 

まだまだオブジェクト指向を勉強中のため荒削りの記事になってしまいしたが、少しでもお役に立てれば幸いです。