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

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

在我看来,一项成就包含以下内容:


触发器“组”(例如,在游戏结束时,在碰撞时等)
依赖关系(例如,只有获得“ 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兼容-甚至伪代码也很棒。

最佳答案

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

GameCenterManager遵循单例模式,非常“轻”

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

我建议您同时看一看...

祝好运 :)

关于iphone - iPhone Game Dev:成就框架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7826963/

10-12 00:42