こんにちは。
ここ数日、冬に戻ったのかと思うくらいの冷え込みでしたね。
昨日は眠すぎたのと節電目的でブログ更新もできなかったです。
今日は、UnityでUI周りの実装をする時に使う設計における、汎用的なものができないかな~というお話です。
とは言っても、現在業務で携わっているプロジェクトでの設計が結構使いやすいので、その設計を基に考えています。
3~4回くらいに分けて、紹介しようかなと思っています。
いつか、Youtubeとかに実際に設計して、ゲームを作る過程とかもアップするかもです。
アーキテクチャ
一応、MVC(Model - View - Controller)での設計になります。
完全に理解しているわけではないので、合っているかは不明()
基本的な設計方針~レイヤー分け~
まず、最強の設計を考える上で重要だと思っているのは、汎用性です。
汎用的に使える設計であれば、クラス図を作る時にもその設計からクラス名だけ変更すれば、実装ができる!となるはずです。
ということで、汎用的に使える設計を考える上で、最初に各クラスが属するレイヤーを定義してあげる必要があると思います。
レイヤーの役割を意識することで、そのレイヤーに属するクラスが持つ役割も明確になっていくという考えです。
使用するレイヤーと役割は以下の通りです。
・ Modelレイヤー : 内部で扱うデータの加工や、ビジネスロジックを担う。Controller と View のことは何も知らない。
・ Viewレイヤー : 表示データの作成や、UI表示を担う。Controller と Model のことは何も知らない。
・ Controllerレイヤー : Model と View を繋ぐ役割を担う。Modelから受け取った加工済みの内部データをViewに渡すとか、Viewから依頼を受けてModelにデータを受け取りに行ったりとかする。
MVCに属さないレイヤーとして、Dataレイヤーがあります。
Dataレイヤーはさらに以下に分類されます。
・ VOレイヤー : 不変データ。DBに保存している形式だったり、
・ Domainレイヤー : 可変データ。VOから変換して内部で扱うデータとして保持します。VOに変換してDBに保存することもあります。
・ ViewDataレイヤー : 可変データ。Domainから変換してViewで扱うデータになります。Domainを持たずに生成する場合もあります。
終わりに
あまり長くなりすぎても読みにくいと思うので、今回はレイヤー分けまでのご紹介でした。
もし、この記事を読まれた方は、レイヤー分けから、ご自身で設計を考えたらどのような設計になるか、少し試してみるのも面白いかもしれません。
では、また次回の記事も読んでいただけたら幸いですノシ
あとがき
雷電将軍の強化素材である鍔集めがしんどい