游戏中心显示完成横幅不断显示

时间:2014-05-22 20:20:29

标签: ios xcode game-center

在我的游戏中(我正在使用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分获得了成就,游戏中心横幅在游戏中向玩家表明了这一点。然而,当横幅消失时,它会在一秒左右后重新出现并继续这样做直到我终止游戏。这个循环的东西仍然可以播放游戏。我似乎无法理解为什么会这样做,我在搜索网页时没有遇到过这个问题。 有人有想法吗?或者我应该以另一种方式实现我的成就?

1 个答案:

答案 0 :(得分:2)

一种可能性是您多次调用First10Points方法。在再次展示成绩之前,您应该检查玩家是否已达到10分的成绩。如果他们确实已经达到了它,那就不要打电话给这个方法。

尝试添加BOOL first10 = NO;之类的变量当您运行支票(score == 10)时,请在致电first10 = YES;之前设置First10Points,确保(first10 == NO)