Unityでのゲーム開発のベストプラクティスを考える

Unityで本格的なゲームを作ろうと思うと案外色々なものが必要になってきます。
自分も作っていく上で、色々とこれでいいのかと悩むことが多かったのでこのブログでまとめることで、知識・技術をより確かなものにしたいと思います。


シーン内の画面を作成するときのルールについて
最初に画面を作成するためのルールについて考えてみます。

Unityはゲームオブジェクトにスクリプトを貼り付ければ動かせてしまうため
とりあえずで作ってしまい、あとで修正や把握が困難になることが多々ありましたこのようなことを防ぐためにまず、どう作るかのルールを考えてみたいと思います。


GUIのプログラムにおいて基本となるのはMVC
自分の場合はUnityにおいても、基本としてMVCで実装を行っています。

ViewはUIの参照をもって、その参照を使って値を変更する
ModelはSQLiteやPlayerPrefsそのたファイルやメモリなどストレージをラッピングしてデータを管理するためのクラスコントローラは画面の遷移を主に管理するクラスとして実装します。

サンプルアプリ
上記思想に基づきアプリを作っていこうと思います

https://github.com/BiwaCoder/MVCSample

こんな感じでViewとControllerを分離します
https://github.com/BiwaCoder/MVCSample/blob/master/Assets/Scripts/MvcController.cs
https://github.com/BiwaCoder/MVCSample/blob/master/Assets/Scripts/MvcView.cs
コードもView,Controllerをわけることで、デザイナーやUXエンジニアとプログラマの作業も分けやすくなるはずです。
ViewはデザイナーさんやUXエンジニアが触れる用に極めてシンプルにすることが一番重要なポイントです。
ロジックなどがあると、UIが変更しにくくなるので、極限まで依存性を減らしていきましょう。

アニメーションなどもViewに組み込むことになるのですが
動かない、静的なビューとアニメーションしているビューを同じコードに埋め込むとわかりにくくなるため
ビューもアニメーションレイヤ、静的構造データなど分離しておくのがいいかなと感じています。