我想制作像“乒乓球”这样的小型游戏。一切工作正常,但是现在,当我想添加一个分数时,游戏冻结了。我将此代码用于我的另一个项目,一切都很好。
这是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:名称:'(null)'文本:'1'fontName:'ROTORcapExtendedBold'位置:{189.33333,106.66666}”
删除
scoreLabel == nil
行后,该应用程序不会冻结,但是随后屏幕上的乐谱会复制旧乐谱并使该乐谱不可读。我该如何解决?
最佳答案
将[self addChild:scoreLabel]
放在if语句中。
当前,您每次尝试更新标签时都试图将其添加到场景中,一旦标签已经在场景中就无法再次添加。