如何检索游戏中心成就百分比并通过修改提交回来?

时间:2015-02-14 05:24:36

标签: ios game-center

我已经配置了所有游戏中心功能以及我用来解锁成就的代码,这完全正常。

- (void) unlockAchievementThis:(NSString*)achievementID {
    GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier:
                                  achievementID];
    if (achievement){
        achievement.percentComplete = 100;
        achievement.showsCompletionBanner = true;
        [GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
            if (error != nil) {
                NSLog(@"Error at unlockAchievementThis()");
            }
        }];
    }
}

现在我的问题在于增量成就。我有另一种方法,几乎​​没有成就,我希望以前的成就百分比用常数来增加它。

我的游戏是在cpp,我不太了解ObjC。 我有一些代码,我认为应该帮助我,但我不知道如何使用 achievementDescriptions 获取百分比并将 incStep 添加到其中并将其提交给游戏中心

- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
    NSMutableDictionary *achievementDescriptions = [[NSMutableDictionary alloc] init];
    [GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler:^(NSArray *descriptions, NSError *error) {
        if (error != nil) {
            NSLog(@"Error getting achievement descriptions: %@", error);
        }
        for (GKAchievementDescription *achievementDescription in descriptions) {
            [achievementDescriptions setObject:achievementDescription forKey:achievementDescription.identifier];
        }

    }];

2 个答案:

答案 0 :(得分:1)

百分比存储在GKAchievement percentComplete中,因此您需要加载(并更新和报告)GKAchievement而不是GKAchievementDescription

GKAchievmenentDescription已在iTunes Connect中配置,并且是#34;只读"从您的应用程序的角度来看。

答案 1 :(得分:0)

最后我通过以下代码获得输出......

- (void) incrementAchievementThis:(NSString*)achievementID :(NSInteger) incStep
{
    [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error)
     {
         if (error == nil) {
             for (GKAchievement* achievement in achievements) {
                 if ([achievementID isEqualToString:achievement.identifier]) {
                     achievement.percentComplete += incStep;

                     [GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error) {
                            if (error != nil) {
                                NSLog(@"Error at incrementAchievementThis()");
                            }
                    }];
                 }
             }
         }
         else {
             NSLog(@"Error in loading achievements: %@", error);
         }
     }];
}