为什么这个高分会出现故障?

时间:2014-04-13 00:42:39

标签: ios objective-c sprite-kit

出于某种原因,游戏结束时的高分未正确显示。在一轮比赛之后,比分和高分都显示在游戏菜单上。分数显示正常,但是如果用户击败他们的高分,则不会更新,直到重新加载菜单。

如果那令人困惑:

游戏1:得分= 30,之前的高分显示= 10

游戏2:得分= 40,之前的高分显示= 30

游戏3:得分= 10,高分显示= 30

所以基本上它不会在实现时显示新的高分,直到下次加载游戏菜单为止。

这是代码:

-(void)update:(CFTimeInterval)currentTime {

    score = _debris.count + _debris2.count;
    _scoreLabel.text = [NSString stringWithFormat:@"%d", score];

}

并在initWithSize方法中:

highScoreNumber = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreSaved"];
if (score > highScoreNumber) {
    highScoreNumber = score;
    [[NSUserDefaults standardUserDefaults] setInteger:highScoreNumber forKey:@"highScoreSaved"];

这是游戏中的代码,这是游戏菜单上的代码:

    SKLabelNode *highScore = [SKLabelNode labelNodeWithFontNamed:@"DIN Condensed"];
    highScore.fontSize = 40;
    highScore.alpha = 0.7;
    highScore.fontColor = [SKColor whiteColor];
    highScore.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)-15);

    highScoreNumber = [[NSUserDefaults standardUserDefaults] integerForKey:@"highScoreSaved"];
    highScore.text = [NSString stringWithFormat:@"BEST: %d", highScoreNumber];

基于此,是否有任何理由说明为什么在有新的高分时高分不更新,而是等到重新加载gamoever屏幕?

1 个答案:

答案 0 :(得分:1)

您是否在[[NSUserDefaults standardUserDefaults] synchronize]之后立即致电[[NSUserDefaults standardUserDefaults] setInteger:highScoreNumber forKey:@"highScoreSaved"];?这将确保立即保存数据。