spriteKit从另一个类访问变量?

时间:2014-02-16 16:53:20

标签: sprite-kit

好的,所以对于我的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中显示。

1 个答案:

答案 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的整数。

Passing integer between scenes, iphone game sprite-kit