我编写了一个简单的游戏,并希望将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/