在 objective c 中使用 NSUserDefaults 保存、加载和更新获胜计数

save,load and update win count using NSUserDefaults in objective c

我有两个场景 - 在 GameScene 中,我获得获胜计数并将其保存到 BonusScene,一切正常,但我想每次都在 GameScene 上显示获胜计数,我在 BonusScene 中重新启动应用程序,它显示正确的计数,但在 GameScene 中它以 1 开头。这是我一直在使用的内容:GameScene.m

-(void)winCount{
win++;
winningCount =winningCount +win;
NSLog(@"%i",win);
NSUserDefaults *scoreprefs = [NSUserDefaults standardUserDefaults];
[scoreprefs setInteger:winningCount forKey:@"winningCount"];

winLabel = [SKLabelNode labelNodeWithFontNamed:@"ROTORcapExtendedBold"];
winLabel .fontSize = 70.f;
winLabel .position = CGPointMake(CGRectGetMidX(self.frame)+(CGRectGetMidX(self.frame)/2),CGRectGetMidY(self.frame));
winLabel .zPosition = 5;
winLabel .text = [NSString stringWithFormat:@"%ld",(long)winningCount];
[self addChild:winLabel];

并且在BonusScene.m

@implementation BonusScene
@synthesize winningCount;
-(id)initWithSize:(CGSize)size{
NSUserDefaults *scoreprefs = [NSUserDefaults standardUserDefaults];
self = [super initWithSize:size];
if (self){
winningCount =[scoreprefs integerForKey:@"winningCount"];
    SKLabelNode *wins = [SKLabelNode labelNodeWithFontNamed:@"ROTORcap Extended Bold"];
    wins.text =[NSString stringWithFormat:@"%ld",(long)winningCount ];
    wins.position = CGPointMake(CGRectGetMidX(self.frame) + 100,(CGRectGetMidY(self.frame)) + self.frame.size.height/4 );
    wins.fontSize = 15.f;
    [self addChild:wins]

如何在 GameScene 中更新它,以便它显示与 BonusScene 中相同的结果?

更新你的游戏场景
-(void)winCount{
   // get previous count first
    winningCount =[scoreprefs integerForKey:@"winningCount"];
    win++;
    winningCount = winningCount + win;
    NSLog(@"%i",win);
    // other code of the function