在我的SpriteKit游戏中,除非应用程序完全退出,否则分数不会重置为零。当您转到游戏菜单,然后再次单击“播放”时,上一个游戏的分数将继续。我用来更新分数的方法是:
if (person1.position.y < obstacle1Node.position.y) {
staticScore++;
scoreLabelNode.text = [NSString stringWithFormat:@"%ld", (long)staticScore];
}
每当障碍物节点通过人员节点时,分数就会更新。退出游戏场景时,我使用的代码是:
scoreLabelNode.text = [NSString stringWithFormat:@"0"];
scoreNumber = 0;
SKAction *wait = [SKAction waitForDuration:0.01];
[self runAction:wait completion:^{
GameMenu *gameMenu = [GameMenu sceneWithSize:self.frame.size];
SKTransition *transition = [SKTransition fadeWithDuration:1.0];
[self.view presentScene:gameMenu transition:transition];
[self removeAllActions];
[self removeAllChildren];
}];
此代码用于主页和重启按钮。我不太清楚为什么分数不会重置为零。以前,在我实施复杂的游戏结束菜单之前,当游戏进入另一个场景然后回到GamePlay场景时,分数将重置为零。 scoreNumber
被声明为NSInteger
。任何帮助将不胜感激,谢谢你提前!
答案 0 :(得分:1)
因为scoreNumber = 0;
。您正在递增staticScore
以进行分数更新并增加,但您在退出游戏场景时设置scoreNumber = 0
。您需要执行staticScore = 0
才能重置分数。