我想制作像'乒乓球'这样的小游戏。一切都很好,但是现在,当我想添加一个分数时,游戏会冻结。我将这段代码用于我的另一个项目,一切都很好。
以下是score
部分的代码:
-(void)scoreCount{
score ++;
if(scoreLabel == nil){
scoreLabel = [SKLabelNode labelNodeWithFontNamed:@"ROTORcapExtendedBold"];
scoreLabel.fontSize = 40;
scoreLabel.position = CGPointMake(self.frame.size.width/2,self.frame.size.height/3);
scoreLabel.zPosition = 0;
}
[self addChild:scoreLabel];
scoreLabel.text = [NSString stringWithFormat:@"%ld",(long)score];
}
在控制台中我收到了这条消息:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'尝试添加已有父级的SKNode:name:'(null)'text:'1'fontName:'ROTORcapExtendedBold'位置:{189.33333,106.66666 }“
删除行scoreLabel == nil
后,应用程序不会冻结,但屏幕上的分数会复制旧分数并使分数无法读取。
我该如何解决?
答案 0 :(得分:5)
将[self addChild:scoreLabel]
放在if语句中。
目前,您每次更新标签时都会尝试将其添加到场景中,并且一旦它已经在场景中就无法再次添加。