Unityに関連する記事です

 以下の内容で順番に実装を進めていきます。

手順14 ーMVP パターンへのリファクタリングー
20.MVP パターンへのリファクタリング



 新しい学習内容は、以下の通りです。

 ・既存の処理をリファクタリングして MVP パターンに変更する



20.MVP パターンへのリファクタリング

1.設計


 Grid ゲームオブジェクトの一連の動作のリファクタリングを行い、MVP パターンに変更していきます。

 いままでは実装していない部分の処理を MVP パターンにて設計して実装を行ってきましたが、
今回はすでに動作している Grid 関連の処理をリファクタリングし、MVP パターンに変更していきます。
Grid ゲームオブジェクトにアタッチされている Grid スクリプトの内容を View と Model の2つのクラスに分割します。
Model クラスには MainGame が管理を行います。

 View については Presenter クラスにて管理を行います。
なお、Button の機能については、View クラスに管理させる方法と Model クラスに管理させる方法とがあり、一概にどちらとは言えない部分になっています。
今回は View クラスにて管理していますが、他の記事では Model クラスにて管理している場合もあります。


Grid_View スクリプトを作成する


 いままでの View クラスと同じように UI 表示機能の制御処理のみを記述しています。

 処理の内容を見る前に、現在の Grid クラスを元に、自分で考えて書いてみてください。


Grid_View.cs

<= クリックすると開きます。




Grid_Model スクリプトを作成する


 enum も ReactiveProperty として作成することができますので、GridOwnerType をReactiveProperty として宣言し、購読出来るようにします。


Grid_Model.cs

<= クリックすると開きます。




Grid ゲームオブジェクトを複製して、Grid_Model ゲームオブジェクトを作成し、設定を行う


 Prefabs フォルダにある Grid ゲームオブジェクトを ctrl + D ボタンで複製します。
名称を Grid_Model に変更してください。

 先ほど作成した View と Model のスクリプトをアタッチし、アサインの設定を行ってください。


フォルダ画像



ゲームオブジェクトの構造



インスペクター画像




MainGame スクリプトを修正する


 Grid_Model クラスを管理するため、新しい変数の宣言を追加します。
生成を行う際のクラスも変更になるため、プレファブ用に新しい変数の宣言も追加します。

 InitialSettings メソッドと OnClickGrid メソッドと PutOpponentGrid メソッドの処理を
新しく作成したクラスを利用する形に修正します。

 Restart メソッドを作成し、リスタートする際の処理を追加します。 


MainGame_Model.cs

<= クリックすると開きます。



MainGame ゲームオブジェクトの設定を行う


 新しい変数に必要な情報をアサインしておきましょう。
どの変数にどのような情報が必要になるのか、プログラムを読み解いて自分で考えてアサインしてみてください。


インスペクター画像



 以上でこの手順は完了です。


Presenter スクリプトを修正する


 Start メソッド内の TODO 部分を2か所実装します。


Presenter.cs

<= クリックすると開きます。



Presenter ゲームオブジェクトの設定を行う


 新しく追加した変数に情報をアサインします。


インスペクター画像


 以上でこの手順は完了です。


ゲームを実行して動作を確認する


 ゲームの処理の流れを把握した上で、ゲームを実行して動作の確認を行いましょう。
今回はリファクタリングを行っていますので、いままでと同じようにゲームが動作していることを確認してください



 おつかれさまでした!

 以上でこのゲームの制作は完成になります。
今後も処理の改良や、機能の追加、他のゲームへの応用を考えて、処理の理解を深めていってください!

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます