Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么这个高分会出现故障?_Ios_Objective C_Sprite Kit - Fatal编程技术网

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

Ios 为什么这个高分会出现故障?,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,由于某些原因,游戏结束页面上的最高分没有正确显示。一轮比赛后,分数和高分都显示在“游戏结束”菜单上。分数显示得很好,但是如果用户超过了他们的高分,它不会更新,直到重新加载菜单 如果这令人困惑: 第1场:得分=30,上一个高分显示=10 第二场:得分=40,显示先前的高分=30 第三场:得分=10,高分显示=30 因此,在下一次加载游戏结束菜单之前,它基本上不会显示新的高分。 代码如下: -(void)update:(CFTimeInterval)currentTime { score

由于某些原因,游戏结束页面上的最高分没有正确显示。一轮比赛后,分数和高分都显示在“游戏结束”菜单上。分数显示得很好,但是如果用户超过了他们的高分,它不会更新,直到重新加载菜单

如果这令人困惑:

第1场:得分=30,上一个高分显示=10

第二场:得分=40,显示先前的高分=30

第三场:得分=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];

基于此,有没有任何理由说明为什么当出现新的highscore时highscore没有更新,而是等待gamoever屏幕重新加载

您是否在
[[NSUserDefaults standardUserDefaults]setInteger:highScoreNumber forKey:@“highScoreSaved”]之后立即调用
[[NSUserDefaults standardUserDefaults]synchronize]
?这将确保立即保存数据。

您是否在
[[NSUserDefaults standardUserDefaults]setInteger:highScoreNumber forKey:@“highScoreSaved”]之后立即调用
[[NSUserDefaults standardUserDefaults]synchronize]
?这将确保数据立即被保存。没有,但我尝试了,它成功了。谢谢太好了:)我应该把它作为答案发布吗?是的@MatíasR你应该发布。是的@MatíasR我会选择它作为正确答案。