好的,所以对于我的mainGameScene类,我通过声明和合成两个属性来实现评分:
@property (nonatomic) NSUInteger score;
@property (nonatomic) SKLabelNode *scorelabel;
创建标签:
scorelabel = [SKLabelNode labelNodeWithFontNamed:@"chalkDuster"];
scorelabel.name = @"scoreCounter";
scorelabel.text = @"0";
scorelabel.fontSize = 30;
scorelabel.position = CGPointMake(50, 25);
[self.scene addChild:scorelabel]
然后使用if语句来增加它:
if (node.position.x > 320) {
score++;
scorelabel.text = [NSString stringWithFormat:@"%lu",(unsigned long)score];
}
我需要知道的是我如何访问scorelabel.text并在我的gameOverScene Class中使用它。 另外,我如何创建一个变量来跟踪一个高分,以便在gameOverScene中显示。
答案 0 :(得分:1)
要跟踪高分,您应该使用用户默认值:
int highScore = [[[NSUserDefaults standardUserDefualts] objectForKey@"High Score"] integerValue];
如果您将高分设置为用户默认值中的NSNumber,则在此处将其设为int。
if (highScore){
if (highScore < score){
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:score] forKey:@"High Score"];
}
}
else{
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:score] forKey:@"High Score"];
}
[[NSUserDefaults standardUserDefaults] synchronize];
然后您可以通过场景转换到游戏,并再次从用户默认值中提取高分。
至于在场景之间传递标签,您可以将scorelabel.text
属性设置为另一个用户默认值,或者使用我所描述的方法来传递带有SKLabelNode的整数。