私は簡単なゲームを書いており、GameCenterの成果をそのゲームに統合しようと考えています。iPhoneゲーム開発者:Achievement Framework?
私は、これを余分な成果を追加しやすい、きれいできちんとした方法でやりたいと思います。
私は成果は、以下のものを持って、それを見たよう:
- Aトリガ・「グループ」(例えば、ゲーム終了で、上の衝突など)
- A依存性(例えば、あなたが得ることができませんあなたが "5つの金の星"を得たまで "10の金の星")。
これに基づいて、トリガクラスとその依存関係でグループ化された(plistからの)完全なリストを読み上げたシングルトンクラスを作成しようとしました。このシングルトンは、他のクラスがグループをトリガーするような@selector()
のようなコールバックを登録することを許可しました(例えば、 "on 'game_end'トリガ、この関数を呼び出す)。これらのトリガーは、私のゲームの注文点できれいに呼び出すことができます。これは、私が将来のゲームで使うことができるきれいで、ほぼ「抽象的な」システムを作り出しました。
災害;私はEXC_BAD_ACCESS
というエラーに終わります。これは、非スタティッククラスのコールバックをスタティックシングルトンクラスにバインドしているためです。エラーは、この行に表示されます:
GCAchievementsHelper *h = [GCAchievementsHelper sharedInstance];
[h addEventListener:@"game_end" target:self selector:@selector(achievementHandlerGameEnd:)];
私は「自己」(ゲーム層)は、静的なシングルトンに渡すことができないためであると仮定しています!
私は実績のために必要なすべての条件をチェックするために、自分のコードの周りに繰り返しIF文を散らばらなければならないのです。可能な限り!要約する
、私の質問は:
誰もが達成フレームワークを知っていますか? GC/OpenFeintやObjC互換である必要はありません。擬似コードですら大丈夫です。
それらの両方が幻想的に見える - リンクへの感謝を。両方とも、成果は「持っていた」とゲームに要求するように見えますが、抽象的な方法で成果(トリガーと依存関係/要件の両方で)を定義する方法を見つける必要があります。 – Nick
これはSQLiteを使うことができるので、この人はあなたが模倣できるものを提案しています(http://www.reedolsen.com/how-to-develop-achievements-for-iphone-games/)。基本的には、SQLiteで統計を追跡するだけで、獲得した成果を確認するトリガーを作成することができます。 – Goles