UnityのScriptの構成についてご相談です.
設計方法にて試行錯誤しています.
現状以下のようなクラス構造にしてます.
GameManager -GUIManager -CharaManager -HogeManager --HogeController
GameManagerはManagerのManagerみたいなもんです.
InspectorビューからぽちぽちManagerたちを指定してます.
C#
1// GameManager.cs 2 3public GUIManager guiManager; 4public CharaManager charaManager; 5public HogeManager hogeManager;
このうちHogeManagerはGameObject Hogeを管理します.
HogeはHogeControllerがアタッチされているPrefabです.
HogeManagerからGameManagerへイベントを通知するには
C#
1// HogeManager.cs 2public GameManager gameManager;
このようにHogeManager内でGameManagerを宣言して
GameManagerの関数を呼び出せばいいのですが
この方法は管理者であろうGameManagerを管理対象のHogeManagerが管理しているように感じます.(相互管理?)
同様にHoge PrefabにアタッチされているHogeControllerにて
C#
1// HogeController.cs 2public HogeManager hogeManager;
管理されるControllerがManagerを宣言しているのですが, この場合
Inspectorビューで指定できませんでした.
質問としては
HogeControllerにてあるイベントが発生したときに, HogeManagerに伝えたい場合どのようなUnity, C#の機能を使うのが適切でしょうか.
また, GameManagerとHogeManagerが相互にそれぞれを宣言している状況は一般的な設計方法?としては適切でしょうか.
参考書ではこのようにしているものもありますが......
追記
そうですね. GameManager <->HogeManager <-> HogeControllerで
データをやり取りするイメージでした.
GameManagerはHogeManagerで管理されているHogeControllerの情報を
取得して,GUIManagerなどでGUIを操作する設計ですが, 回りくどかったりするんですかね