2012-04-08 2 views
2

私は悪質なゲーム(iOS/Cocos2d)を開発中です。私はGameObjectsの束を持っているクラスマップのオブジェクトを持っています。iOSゲームのモデルチェンジについてのお知らせ

私はGameViewControllerクラスを持っています。モデルの中の何かが起こると(生き物が殺され、プレイヤーが移動した、何か)、私はこの変更についてGameViewControllerに通知する必要があります。どうやってするか?

私は2つのオプションを参照してください。

  1. GameViewControllerインスタンスは、地図のデリゲートとすべてのゲームオブジェクトのデリゲートである可能性があります。
  2. GameViewControllerは、MapおよびGameObjectsからのNSNotificationをリッスンします。

どちらが良いですか?どうして?

+0

GameViewControllerはすべてのGameObjectについて知っている必要がありますか?マップにはGameObjectsが含まれているので、GameObjectsを見たり、通知を受けたり、GameObjectsへのポインタを与えたりして、GameViewControllerクラスにそれらのメッセージを渡すことができます(これらの3つの技術)。 – Dondragmer

答えて

0

ココスは強力なシングルトンベースのライブラリであるため、シングスメソッドはココスのゲームではかなり一般的です。しかし、それは論理的なデフォルトの選択であるということではありません。

2つ目の選択肢は、一般的にココスだけでなく、どんなプログラムでもより賢明で安全なアプローチです。 NSNotificationsは、あなたのプログラム内で多数の参照やシングルトンを渡す可能性のあるバグのない状態になることなく、他のオブジェクトからオブジェクトを通知することを可能にします。いくつかの通知で目標を達成できれば、これは道のりです。

NSNotificationsを毎秒複数の通知のように使用している場合は、ポインタを使用してオブジェクト間の参照を渡すか、親クラスまたはメインのCocosシーンクラスをシングルトンとして作成することを検討する必要があります。

シングルトンを使用すると、実装が簡単ですが、悪用するのも簡単です。親クラスと親クラスのメソッドに簡単にアクセスできるという理由だけで、子クラスが兄弟クラスの動作を制御することを習慣にすることは望ましくありません。

関連する問題