uFrame公式Wikiを一つ一つ読み解いていきます。
そもそもuFrameとは
uFrame Game Frameworkは、MVVMパターンを採用し、uFrame専用ダイアグラムUIが特徴のゲームフレームワークです。ビジネスロジックとビューロジックを分けて記述できるところが大きいメリットだと思っています。
uFrameのコアコンセプトについて
uFrameはMVVMパターンを採用しています。
通常MVVMパターンは、
- View
- ViewModel
- Model
この3つの要素で成り立っていますか、uFrameの場合、
- View
- ViewModel
- Controller
と、Model部分がControllerに変わっています。
View
ViewはUnityのヒエラルキーブラウザに配置されるGameObject、すなわち、ゲーム内で使用されるViewです。
ViewModel
ViewModelはデータ構造を保持します。
Controller
Controllerは実行されたコマンドに対して、ゲームロジックを実行します。
ViewModelからViewに表示の更新をしたい場合
ViewはViewModelとデータバインディングされています。ViewModelに定義されているデータの更新をViewは感知して表示を更新する仕組みになっています。ViewModelがViewを直接操作してはいけません。データと表示部分を切り離すことがMVVMの思想だからです。
よってViewModelはViewの存在を知りません。あくまでデータバインディングされているだけの状態です。
ViewからViewModelにデータの更新をかけたい場合
Viewが直接ViewModelのデータにアクセスすることはありません。この場合、VieweModelに予めコマンドを用意します。データバインディングされたそのコマンドをViewは実行するだけで、それ以上のことはしません。ViewModelはコマンドを実行されたことをControllerに通知し、どういうゲームロジックを実行するのかを確認します。Controllerは実行されたコマンドを元にゲームロジックを走らせ、ViewModelのデータを更新します。
まとめ
このように、uFrameのコンセプトは、『ゲームロジック』『データ』『表示』を切り分けることだということがわかりました。こうすることでゲーム開発をしていく中、追加機能が増えたとしてもお互いの領域を侵害せずに健全な状態を保つことができるというわけです。後から開発に入ってきたメンバーがソースを見ても理解しやすい状態になっているということでしょう。
重要なのは『ViewMoelとControllerはゲーム外に存在し、Viewがそれらとゲームをつないでいるという設計』だということです。
今回は概念だけの説明で終わりますが、別記事で具体的なソースを含めてまとめていきます。