出于某种原因,游戏结束时的高分未正确显示。在一轮比赛之后,比分和高分都显示在游戏菜单上。分数显示正常,但是如果用户击败他们的高分,则不会更新,直到重新加载菜单。
如果那令人困惑:
游戏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屏幕?
答案 0 :(得分:1)
您是否在[[NSUserDefaults standardUserDefaults] synchronize]
之后立即致电[[NSUserDefaults standardUserDefaults] setInteger:highScoreNumber forKey:@"highScoreSaved"];
?这将确保立即保存数据。