分数从skscene转移到otherscene

时间:2014-09-16 09:28:35

标签: ios iphone ios7 sprite-kit

我无法在其他场景中获得分数。我设置@propery但它不起作用。得分是" 0"每次都不改变。 我的代码在这里。

OtherScene.h

@interface OtherScene : SKScene
@propery NSUInteger score;
@end

OtherScene.m

@implementation OtherScene
{
SKLabelNode *scoreLabel;
}

-(void)addScoreLabel
{
scoreLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"];
scoreLabel.text = [NSString stringWithFormat:@"SCORE: %lu", (unsigned long)self.score];
scoreLabel.position = CGPointMake(500, 50);
scoreLabel.name = @"gameOverScore";
[self addChild:scoreLabel];
}

MyScene.m

@interface MyScene ()<SKPhysicsContactDelegate>
@property NSUInteger score;
@end
- (void)gameOver
{

GameOverScene *gameOverScene = [GameOverScene sceneWithSize:self.size];
gameOverScene.score = self.score;
[self.view presentScene:gameOverScene transition:[SKTransition pushWithDirection:SKTransitionDirectionLeft duration:0.5]];
}

1 个答案:

答案 0 :(得分:0)

何时/何地调用addScoreLabel?

如果这是在OtherScene init中,那么你可以在

行中有效地运行它
GameOverScene *gameOverScene = [GameOverScene sceneWithSize:self.size]; 

含义:之前您分配了分数。您可以在分配分数后从MyScene调用更新标签方法:

GameOverScene *gameOverScene = [GameOverScene sceneWithSize:self.size];
gameOverScene.score = self.score;
[gameOverScene addScoreLabel];

甚至更好,在OtherScene中的自定义属性setter方法中执行此操作,即setScore:(NSUInteger)score并单独创建标签以更新其分数字符串以使其更灵活。