在 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
我有两个场景 - 在 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