我在我的iPhone游戏中使用Game Kit,当我完成一个关卡时,我会检查这样的成就:
if (timeSpentInLevel < 30) {
GKAchievement *ach = [[GKAchievement alloc] initWithIdentifier:@"cryptoquips.achievements.solutiontime.30s"];
ach.percentComplete = 100.0;
ach.showsCompletionBanner = YES;
if (ach != NULL) {
[ach reportAchievementWithCompletionHandler:^(NSError *error) {
if (error!= nil) {
NSLog(@"achievement reporting failed");
}
}];
}
}
但是当我在另一个级别再次执行此操作时,横幅显示无论如何,我认为这些积分将再次获得。在iTunes Connect中,我将成就设置为“可实现多于一次”,否则不应允许这样做。
如何防止这项成就被多次授予?
答案 0 :(得分:1)
您可以使用 loadAchievementsWithCompletionHandler:来执行此操作。它将获得已经由玩家获得的成就的NSArray。枚举此数组并检查其中任何一个是否是您要解锁的成就,如果没有,请解锁。