检查您是否已经在Game Center / GameKit中解锁了一项成就

时间:2011-01-22 13:47:22

标签: xcode ios gamekit game-center achievements

很长一段时间以来,我一直对此感到难过。我理解如何解锁Game Center中的成就,甚至还有一个完整的消息传递系统。但我无法弄清楚如何检查成就是否已经解锁:(

显然这不起作用:

GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; 
NSLog(@"%i",achievement.completed);

它始终跟踪“0”。

解锁成就确实有效:

GKAchievement *achievement = [[GKachievement alloc] initWithIdentifier:ident] autorelease]; 
achievement.percentComplete = 100;

所以并不是因为我在整个成就中犯了错误,只是GameKit无法告诉我成就是否已经解锁。

如果有人能帮助我,我将非常感激!

2 个答案:

答案 0 :(得分:4)

为您需要呼叫的当前登录用户加载以前提交的成就:

[GKAchievement loadAchievementsWithCompletionHandler: ^(NSArray *scores, NSError *error)
{
    if(error != NULL) { /* error handling */ }
    for (GKAchievement* achievement in scores) {
        // work with achievement here, store it in your cache or smith
    }

}];

你知道从Game Center开始的绝对最佳方式 - 成就和高分者是看看Apple在线的演示项目: http://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html

查看代码 - 它很简单,可以快速掌握正在发生的事情,它具有本地成就缓存,提交给不同的排行榜等等。

答案 1 :(得分:0)

我即将开始实施。

从我读到的文档来看,我认为你需要做的就是打电话

loadAchievementsWithCompletionHandler: 

http://developer.apple.com/library/ios/documentation/GameKit/Reference/GKAchievement_Ref/Reference/Reference.html#//apple_ref/doc/uid/TP40009959-CH1-SW1