Ios 场景识别游戏场景的高分

Ios 场景识别游戏场景的高分,ios,objective-c,iphone,sprite-kit,Ios,Objective C,Iphone,Sprite Kit,我希望我的SKScene(MedalScene)能够识别GameScene的高分,因为如果高分是例如“20”,那么它将显示为奖牌。我怎么能做到 我在游戏场景中的高分代码: NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; [ud setObject:[NSString stringWithFormat:@"%d",_score] forKey:SCORE_OVER]; int scoreString=[[ud objectF

我希望我的
SKScene
MedalScene
)能够识别
GameScene
的高分,因为如果高分是例如“20”,那么它将显示为奖牌。我怎么能做到

我在游戏场景中的高分代码:

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:[NSString stringWithFormat:@"%d",_score] forKey:SCORE_OVER];

int scoreString=[[ud objectForKey:BEST_SCORE] intValue];
if(scoreString < _score){
    [ud setObject:[NSString stringWithFormat:@"%d",_score] forKey:BEST_SCORE];
    scoreString = _score;

我的游戏场景以分数和高分显示游戏结束。以下是代码:

-(void)showGameOver{

NSUserDefaults *hud = [NSUserDefaults standardUserDefaults];
[hud setObject:[NSString stringWithFormat:@"%d",_score] forKey:SCORE_OVER];

int scoreString = [[hud objectForKey:BEST_SCORE] intValue];
if(scoreString < _score){
    [hud setObject:[NSString stringWithFormat:@"%d",_score] forKey:BEST_SCORE];
    scoreString = _score;

SKLabelNode *lbOver = [SKLabelNode labelNodeWithFontNamed:@"Walibi0615"];
lbOver.position = CGPointMake(CGRectGetMaxX(self.frame)*3/4, CGRectGetMidY(self.frame)+33);
lbOver.zPosition = 1;
lbOver.fontSize = 20;
lbOver.fontColor = [UIColor blackColor];
lbOver.text = [NSString stringWithFormat:@"%d", _score];
[_gameOver addChild:lbOver];

SKLabelNode *lbMaxOver = [SKLabelNode labelNodeWithFontNamed:@"Walibi0615"];
lbMaxOver.position = CGPointMake(CGRectGetMaxX(self.frame)*3/4, CGRectGetMidY(self.frame)-14);
lbMaxOver.zPosition = 1;
lbMaxOver.fontSize = 20;
lbMaxOver.fontColor = [UIColor blackColor];
lbMaxOver.text = [NSString stringWithFormat:@"%d", scoreString];
[_gameOver addChild:lbMaxOver]; }

我希望现在我的意思清楚了。提前感谢您的帮助!:)

设置用户默认值后,应同步用户默认值

[ud synchronize];
不过,我也会在userdefaults中使用实整数(I.s.o.手动转换为字符串),所以

NSInteger score = [ud integerForKey:BEST_SCORE];
if (_score > score)  {
    [ud setInteger:_score forKey:BEST_SCORE];
    [ud synchronize];
}

谢谢你的快速回复。如果我用你的代码替换游戏场景代码,高分将在游戏场景中消失。所以我只想要一个到我的MedalScene的链接。@Stefanovuototocésar如果你同步你的用户默认值,但它们仍然没有出现在另一个场景中,那就是出了问题。老实说,很难理解您的确切问题是什么,您的问题没有多大意义,您发布的代码也很少。尝试更清楚地解释您的问题和/或发布更多的代码。@Stefanovuototocésar在阅读了您编辑的问题后,似乎确实需要在更改用户默认值后添加同步调用,如果要将它们与“20”进行比较,则应使用整数(将字符串与20作为整数进行比较毫无意义).我修改了一点你的代码,现在可以用了!谢谢你的帮助,彼得!
[ud synchronize];
NSInteger score = [ud integerForKey:BEST_SCORE];
if (_score > score)  {
    [ud setInteger:_score forKey:BEST_SCORE];
    [ud synchronize];
}