Unityに関連する記事です

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

手順12 ーMVP パターンによるインフォ表示の実装ー
18.MVP パターンの学習



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

 ・UniRx の ReactiveProperty の活用



18.MVP パターンの学習

1.設計


 前回学習し実装を行った MVP パターンを利用して、この手順においてはインフォ情報についても同じように制御を行います。
ここでいうインフォ情報とは、配置できないマス目をクリックした際に警告メッセージを表示させる機能です。
他にも、ゲームの進行上、ゲーム画面に表示した方がいい情報があれば、この部分で管理を行います。

 新しく View 用クラスの Info_View クラスを作成し、インフォ情報の画面表示の更新を行います。

 また、新しく Model 用の Info_Model クラスを作成し、値の管理を行います。
インフォ情報の値は ReactiveProperty で作成し、購読可能な情報として定義しておきます。

 前回作成した MainGame_Model クラスを修正し、適宜なタイミングで Info_Model クラスに対して値の更新を命令します。

 同じように前回作成した Presenter クラスを修正し、Info_Model クラスにある ReactiveProperty で定義したインフォ情報の値を購読(監視)し、
値の更新に合わせて、Info_View クラスに自動的に命令を出し、画面の表示を更新します。

 処理の流れをイメージしながら、実装に挑戦してみてください。


Info_View スクリプトを作成する


 Text コンポーネントを管理し、ゲーム画面のインフォ情報の表示更新を行うクラスです。

 UpdateDispayInfo メソッドを Info_Model クラスにある ReactiveProperty の購読部分と紐づけることにより、
ReactiveProperty の更新に合わせて、自動的にゲーム画面のインフォ情報の表示更新を行うようにしています。


Info_View.cs

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



Info_Model スクリプトを作成する


 ReactiveProperty を使い、画面に表示するメッセージの値を管理します。

 ReactiveProperty の値の更新は MainGame_Model クラス内の適宜なタイミングで行います。

 ReactiveProperty の購読は Presenter クラスで行います。


Info_Model.cs

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



MainGame を修正する


 Model クラスである Info_Model クラスを管理するため、新しい変数の宣言を追加します。

 また、OnClickGrid メソッド内の TODO 部分を実装することで、適宜なタイミングでメッセージ用の ReactiveProperty の値に更新の命令をします。


MainGame.cs

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



Presenter スクリプトを修正する

Model と View の仲介役となる Presenter を修正します。

双方の情報を管理しているのはこの Presenter のみとなりますので、
Model 側は View を知りませんし、View 側も Model を知りません。

 このように設計することで、クラス間の状態を疎結合に保つことが出来ます。

 前回と同じように View クラスと Model クラス用の変数の宣言を追加し、
Model クラスにある ReactiveProperty の購読命令を記述します。
その命令内で、View クラスにある画面表示更新用のメソッドを実行するようにセットしておきます。


Presenter.cs

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



Info_View ゲームオブジェクトに Info_View スクリプトをアタッチし、設定を行う


 Canvas 内にある Info_View 用のゲームオブジェクトに Info_View スクリプトをアタッチし、設定を行います。


ヒエラルキー画像



Info_View ゲームオブジェクト



 以上で設定は完了です。


Model のゲームオブジェクトを作成する


 各クラスの役割をわかりやすく管理するため、今回は既存のゲームオブジェクトにアタッチする形ではなく、
各 Model や Presenter ごとにゲームオブジェクトを作成して、それぞれのクラスをアタッチしています。
 この法則に則り、今回も Info_Model 用のゲームオブジェクトを作成し、Info_Model スクリプトをアタッチします。


ヒエラルキー画像



Info_Model ゲームオブジェクト



 以上で設定は完了です。


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


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


インスペクター画像




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


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


インスペクター画像




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


 設計自体が変わり、処理の記述は MVP パターンになりましたが、あくまでもリファクタリングになりますので、ゲームの内容自体は変わりません。
よって、今までと同じようにゲームが遊べるようになっているかを確認してください。



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

 次は 手順13 −MVP パターンによるボタンの実装− です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

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

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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