UnityにおけるMVPアーキテクチャの実装について、Viewコンポーネント以外を非MonoBehaviourなロジックにした場合にどうなるのかを試すためのプロジェクト。 IoCやコンストラクタ制約による依存関係の明確化、テステビリティの向上などに期待してやってみたが、 あまり実践的だとは思わなかった。 DIコンテナとしてVContainerを使用している。
Assets/Pure-MVP-Testbed/Scenes/Main.unity
を再生すると、以下のような簡単なシーンが実行される。
- HPがゲージとラベルで可視化されている
- ボタンによってHPを増減させることができる
mvp-testbed.mp4
HPの表示周りにまつわるロジックとゲーム全体のロジックがあり、この二つのMVPが親子関係になっている。 ボタンによるHPの増減をHPにまつわるロジックに含めることもできたが、Presenterの親子関係を構成したかったためこのようにしている。
2つのViewコンポーネントのみがMonoBehaviourを継承しており、他はPure C#なクラスである。
またGamePresenterはVContainerのIStartable
インターフェースを実装しており、エントリポイントとして機能する。
本来プロジェクトはUniRx およびVContainer を使用しています。