我已经配置了所有游戏中心功能以及我用来解锁成就的代码,这完全正常。
- (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];
}
}];
答案 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);
}
}];
}