私はいくつかのレベルでゲームをデザインしています。私は、一時停止ページ、トランジションページ、プレイヤーのスコアバナー、すべてのレベルに共通のすべてのものを処理するシングルトン(MasterSceneと呼ばれる)として定義されたCCLayerを持っています。 したがって、各レベルで、ユーザーが一時停止ボタンを押すと、一時停止ページに対応するCClayerを表示するためにシングルトンが呼び出されます。私の問題は、シングルトン(レベル)を誰が呼んだのかを知りたいということです。それをする方法はありますか?アプリケーションのアーキテクチャの詳細を知らなくても おかげシングルトンと呼んだ人を知る方法 - 目的C
0
A
答えて
3
は、私は、次の3つのアプローチをお勧めしたい:
- は(レベルのオブジェクトにまたはポインタ、または何でも)レベル番号を渡しシングルトンのメソッドにパラメータとして。
- オブジェクトが現在のレベルを把握しているので、すでに知っているレベルになります。 (もちろん、これは現在のレベルだけがこれらのメソッドを呼び出すことができると仮定していますが、なぜ複数のレベルに一時停止ボタンがあるのかわかりません)。
- このオブジェクトを全くシングルトンにしないでください。各レベルのインスタンスを作成します。このオブジェクトが追跡する必要があるアプリケーショングローバル状態が本当にありますか? MasterSceneを使用して動作をカプセル化し、グローバルな状態をカプセル化していない場合、そのクラスの複数のインスタンスを実際に何かを傷つけない(またはデバイスリソースを大量に消費する)ことはありません。
1
あなたが求めている方法でメッセージのソースを見つける一般的な方法はありません。
しかし、この問題を解決する可能性のある別のアーキテクチャがありますので、それらを検討することをおすすめします。あなたが説明していることは、相互依存クラスの混乱のように聞こえる。あなたのすべてのレベルは、このMasterSceneシングルトンを認識して使用しています。そして、あなたはシングルトンをあらゆるレベルにも気づかせようとしていますか?アプリケーションのあらゆる部分は、他のすべてのアプリケーションに気づく必要はありません。
0
引数として渡すことができます。
@implementation Level30
-(void) pause;
{
[[MasterScene getSingleton] pauseWithLevel:self];
}
@end
関連する問題
- 1. シングルトンの目的C
- 2. 目的Cメソッド方法
- 3. 目的のCでUINavigationコントローラーを呼び出す方法
- 4. 目的関数CでJavaScript関数を呼び出す方法
- 5. 目的のCでメソッドを呼び出す方法は?
- 6. 目的のCのプッシュ通知のボタンイベントでアプリケーションをロードする方法は?
- 7. 1つの目的で混乱-cシングルトンの例
- 8. 目的のcのアンドロイド方法を変換する方法
- 9. 目的C init
- 10. 目的のCのトップバーへの方法
- 11. 目的C NSCoreDataOptimisticLockingExceptionのトラブルシューティング方法
- 12. Objective-Cの代理人と通知
- 13. 目的C tip?
- 14. シングルトンとCアレイ?
- 15. 目的と呼び出し方法の操作?
- 16. 目的地Cを使用してSharePoint WebサービスGetListItemsを呼び出す方法
- 17. 目的C:ドロップエリア
- 18. 目的のCクラスから.mmファイルのメソッドを呼び出す方法
- 19. htmlボタンのクリックイベントで目的のcプラグインメソッドを呼び出す方法
- 20. 目的地Cの特定の期間に画像を呼び出す方法
- 21. 目的C-Push通知がCloudkitと連携していない
- 22. C++親の友人機能を呼び出す方法は?
- 23. 目的C 2つのdate_timeと第2の値の無知を比較する方法
- 24. 目的c:他のクラスに代理人を引き渡す
- 25. 静的クラスとシングルトン
- 26. 静的クラスとシングルトン
- 27. キーボードイベント目的C
- 28. 目的C IBOutlets
- 29. 目的C:スコアカウンター
- 30. ビデオに何人いる人がいるか知ってください
パラメータとしてレベル番号を渡すことがおそらく最良の選択肢です(明らかに、私はボックス外で考えたはずです)。一時停止ページは現在のレベルで変数を設定する必要があるため、子として一時停止ページを追加するのではなく、シングルトンメソッドを使用します。私はちょうど子供が両親に何をすべきかを教えてもらえません...ありがとうございます。 – Cyril