3

我已经为此困扰了很长时间。我了解如何在 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 无法告诉我成就是否已经解锁。

如果有人可以帮助我,我将不胜感激!

4

2 回答 2

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

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

于 2011-09-30T07:14:01.503 回答
0

我即将开始自己实施。

从我读到的文档中,我认为您需要做的是调用

loadAchievementsWithCompletionHandler: 

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

于 2011-01-24T16:14:32.320 回答