プログラム記述の方式の1つに「MVPパターン」というのがあるらしい
【始まり】
お仕事でMVPパターンで記述するのを推奨という事がありまして、MVCじゃなくてMVOなんだ?MVPって最優秀選手ではないのかい、とか思いましたが、どうやらプログラムの記述の方式というのでしょうかそれのMVCとは少し違う方式のようです。Viewで画面上の表示、Modelで変数の記述、PresenterはVとMの橋渡し、ですかね。
【VとM】
VとMを分けることがちょっとおもしろいなと思いまして勉強し始めました。というのも、今まで本当に好き勝手に記述していたので、MVCもMVPもさっぱりわからなかったのです。しかしネット上には勉強を開始できる記事がいっぱいありますね、書いてくれた方々ありがとうございました!(最後にリンクを貼りました)
とはいえ単に記述方式の勉強だけではすまないんですよね、UniRXのReactiveProperty は理解必須と思いました。あとObservable.EveryUpdate() も知ると便利でした。
【勉強用のサンプル】
弾を撃つ事とマガジンチェンジをMVPパターンで作ってみました。要件定義(?)をリストにしておきました。
- ショットボタンで弾を1発撃てる
- 弾はマガジンに10発入っている
- 残りの弾が0になったときにショットボタンを押すと、マガジンの入れ替え作業を行う
- 入れ替え中はインジケータにより、いつ終わるかが視覚的にわかる
- マガジンの入れ替え中はショットを撃てない
- マガジン内の弾が最大値より1つでも少ない場合はマグチェンジボタンでマガジンの交換ができる
記述するときに、Vは表示のみ、Mに変数のみとしたわけですが、これ本当にいいですね。一番いいと思えたのは、後日ソース見ても何をしているか意味がわかった事です。なにせ今までの作り方だと後日ソースを見るとたいてい「これなにしたいんだ??」となっておりまして・・・。(ソースはつまらないと思うので省略)
【これから】
ということなので、これからは基本的にMVPで記述していきたいと思います。今回はたんなる勉強用のプロジェクトでしたが次回ゲームを作成するときには!
【UnityでMVPパターンの勉強に参考になった記事】