i-school - 2Dまるばつゲーム(三目並べ) 手順13
 以下の内容で順番に実装を進めていきます。

手順13 ーMVP パターンによるボタンの実装ー
19.MVP パターンによるボタンの実装



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

 ・UniRx の OnClickAsObservable メソッドの活用例



19.MVP パターンによるボタンの実装

1.設計


 MVP パターンにおいては、ボタン処理の実装を行うことも出来ます。
この機能を実現するため、UniRx には Button コンポーネント用に購読可能な OnClickAsObservable メソッドが用意されています。

 ボタンを押下したことを購読(監視)し、押下した際の処理を Model クラス側に用意するのですが、
今回はすでに MainGame_Model クラス内に用意されているものに命令を出します。
そのため、今回の実装は Presenter クラスの修正のみを行います。

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


Presenter スクリプトを修正する


 新しく Button コンポーネント用の変数を用意し、この変数が押下されたかどうかを購読(監視)します。
押下された場合、特定の条件を満たしている場合のみ、MainGame クラスにあるゲーム情報のリセットを行うメソッドを実行するようにセットしておきます。

 またゲームのリスタートの際には、再度ボタンを押せない状態にする処理を追加しています。

 どちらの処理も TODO の部分を実装しています。
どのような処理が、どのようなタイミングで実装されているのかを理解しながら書いていくように心がけてください。

 なお今回は Presenter クラスに Button の変数宣言を追加していますが、こちらは別途 Model 用のクラスを作成しても構いません。


Presenter.cs

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



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


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


インスペクター画像




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


 ゲームの処理の流れを把握した上で、ゲームを実行して動作の確認を行いましょう。

 まず、ゲームを実行すると、リスタート用のボタンが自動的に押せない状態になります。
この制御がどの部分で行われているのかを、処理を見直して読み取いてみてください。

 勝敗が確定したタイミングで、リスタート用のボタンが押せる状態になります。
これも、どの部分によって制御されているのかを確認してみてください。

 この2つの処理は、どちらも同じ ReactiveProperty の購読処理によって実行されています。

 ボタンを押すと、再度ゲームがスタートします。
その際には、ゲーム画面の情報がリセットされるとともに、リスタート用のボタンが再度押せない状態になります。

 これらの処理がどのように動いているのかをしっかりと理解していくようにしましょう。



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

 次は 手順14 −MVP パターンへのリファクタリング− です。