我无法在其他场景中获得分数。我设置@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]];
}
答案 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
并单独创建标签以更新其分数字符串以使其更灵活。