3

我编写了一个简单的游戏,并希望将 GameCenter 成就与它集成。

我想尝试以一种干净整洁的方式做到这一点,这很容易添加额外的成就。

在我看来,成就具有以下内容:

  • 触发器“组”(例如,在游戏结束时、在碰撞时等)
  • 依赖项(例如,在获得“5 金星”之前,您无法获得“10 金星”)。

基于此,我尝试编写一个单例类,该类读取完整的成就列表(来自 plist),每个成就都按触发器类及其依赖项分组。这个单例允许其他类注册@selector()类似回调来触发组(例如,“在'game_end'触发器上,调用这个函数”)。然后可以在我的游戏中的定制点干净地调用这些触发器。这产生了一个简洁、几乎“抽象”的系统,我可以在未来的游戏中使用它。

然后是灾难;我最终会遇到EXC_BAD_ACCESS错误,我只能假设是因为我@selector将非静态类的回调绑定到静态单例类中。错误出现在这一行:

GCAchievementsHelper *h = [GCAchievementsHelper sharedInstance];
[h addEventListener:@"game_end" target:self selector:@selector(achievementHandlerGameEnd:)];

我假设这是因为“自我”(游戏层)不能传递给静态单例?!

我真的不想在我的代码周围散布大量重复的 IF 语句来检查我取得成就所需的所有条件......如果可能的话!

总结一下,我的问题是:

有人知道成就框架吗?它不必与 GC/OpenFeint 甚至 ObjC 兼容——即使是伪代码也很棒。

4

1 回答 1

1

有几个 GameCenter 开源框架可以利用您的一些负载。

GameCenterManager遵循单例模式,相当“轻”

iOS Game Center Cache是一个功能齐全的 Game Center 框架。

建议你两个都看...

祝你好运 :)

于 2011-10-25T13:23:37.117 回答