在我的游戏中(我正在使用SpriteKit
,因此只支持iOS 7
),当玩家达到前10个积分时,他会获得成就。我已经实现了如下成就方法:
-(void) First10Points
{
GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: @"Achievement_First10Points"];
if (achievement)
{
achievement.showsCompletionBanner = YES;
achievement.percentComplete = 100.0;
NSArray *achievements = [NSArray arrayWithObjects:achievement, nil];
[GKAchievement reportAchievements:achievements withCompletionHandler:^(NSError *error) {
if (error != nil) {
NSLog(@"Error in reporting achievements: %@", error);
}
}];
}
}
这很好,并且确实在10分获得了成就,游戏中心横幅在游戏中向玩家表明了这一点。然而,当横幅消失时,它会在一秒左右后重新出现并继续这样做直到我终止游戏。这个循环的东西仍然可以播放游戏。我似乎无法理解为什么会这样做,我在搜索网页时没有遇到过这个问题。 有人有想法吗?或者我应该以另一种方式实现我的成就?
答案 0 :(得分:2)
一种可能性是您多次调用First10Points
方法。在再次展示成绩之前,您应该检查玩家是否已达到10分的成绩。如果他们确实已经达到了它,那就不要打电话给这个方法。
尝试添加BOOL first10 = NO;
之类的变量当您运行支票(score == 10)
时,请在致电first10 = YES;
之前设置First10Points
,确保(first10 == NO)