Javaでゲームを制作しているときに困ったので質問させていただきました。
#質問に関係があるクラス
GameController(ObjectsManagerの全GameObjectのUpdate()を呼ぶ。ObjectsManagerとScoreManagerのインスタンスを格納してある)
ObjectsManager(GameObjectをリストにまとめ、追加したり削除したり検索したりする)
ScoreManager(スコア、コイン、ライフなどのデータを管理する)
GameObject(全ゲームオブジェクトの抽象クラス。Update()をオーバーライドできるようになっている)
※ゲームは、GameControllerが繰り返しUpdate()を呼ぶことで進められます。
#質問
Unityを参考にして、Update()が繰り返し呼ばれることでゲームが更新されるようにしたのですが、オブジェクトを追加・削除したいときにどうやってObjectsManagerやScoreManagerにアクセスすればよいかわかりません。いくつか方法が思いうかんだのですが、あまりいい方法ではないと思ったので、質問させていただきました。なにかアドバイスをお願いします。
#思いついた方法
1.GameObject(正確にはGameObjectを継承したもの)インスタンス生成時に、ObjectsManagerとScoreManagerのインスタンスを格納しておく。
この方法を思いついたのですが、同じインスタンスを全オブジェクトに格納しておくのは、オブジェクト指向に反する上、無駄なメモリも食ってしまうと思いましたので、良くないと思います。
2.GameControllerのObjectsManagerとScoreManagerをstaticにする。
この方法は、メモリを食わず、Unityもこんな感じでGameObjectを検索していたと思うので、いいかなと思ったのですが、全部で唯一にしたいのではなく、GameControllerにつき一つにしたいので、また、staticにして、どこからでもアクセスできるのは違うかなと思いましたので良くないと思います。
3.上の2を改善(むしろ劣化かもしれない)して、GameControllerの数だけ、staticのObjectsManagerとScoreManagerの配列(orリスト)を用意する。
この方法は、メモリも食わないし、一応動きはすると思うが、オブジェクト指向に反していると思うので良くないと思います。
回答2件
あなたの回答
tips
プレビュー