通知
すべてクリア
16/03/2021 10:31 pm
GameManagerでUIのテキスト更新を直接制御する構成となっています。
今まで、UIのテキスト更新は対象UIの一番親(Canvas)にUI更新専用の
スクリプトをアタッチして、こちらで制御としており、そのようなデータも
(普段手に入るネット上や教則本の情報には)多いかと思いますが、
実際の開発現場では、GameManagerは
ゲーム内のどういった範囲までを制御するように設計することが一般的なのでしょうか?
また、こういったゲームオブジェクト同士の相互作用(ダメージを受けたら
UIのHPを減らすなど)を行う「Manager系」のスクリプトは
どういった種類のものをどういった構成で設計することが一般的なのでしょうか?
16/03/2021 10:33 pm
①
基本的に
GameManager
の管理の範囲はプロジェクトにより様々で、「これが正解」と綺麗に答えは出せないのですが基本的に
GameManager
が行うことは「ゲームスタートやゲームオーバー等のゲーム全体を動かす必要がある部分の管理」と「ゲーム全体を通して扱う変数や関数の管理」です。例えばゲームスタート時に「プレイヤーを配置する」「カメラを動かす」「UIを表示する」と言った動作が必要な場合、これらの動きをGameManager側が管理するのが妥当です。
また、ゲームレベルだったりスコアだったり、ゲーム全体を通して様々なスクリプトが参照するであろう変数はGameManagerが管理します。
なので、実際の現場ではUIの動作は
UIManager
に任せることが多く、GameManager
で管理することは少ないですね。②Manager系のスクリプトの種類と構成についてですが、Manager系スクリプトは役割ごとに作っていくのがベストです。
複数の役割を持ったManagerは作ってはいけません(例:
構成としては、Manager系のスクリプトが、その役割を果たすスクリプト全てを管理しており、それらのManager系のスクリプトが
しかし構成についても正解といった形はなく、単にこの構成がわかりやすいと言うだけなので、自分なりに考えてみるのも面白いかもしれません。
参考に、簡易的なクラス図の画像を貼っておきます。
複数の役割を持ったManagerは作ってはいけません(例:
PlayerCameraManager
等)構成としては、Manager系のスクリプトが、その役割を果たすスクリプト全てを管理しており、それらのManager系のスクリプトが
GameManager
の管理下にあると言うのが望ましいです。しかし構成についても正解といった形はなく、単にこの構成がわかりやすいと言うだけなので、自分なりに考えてみるのも面白いかもしれません。
参考に、簡易的なクラス図の画像を貼っておきます。