2015-02-17 112 views
0

我设置一个标签scoreLabel.text使得游戏暂停

let scoreLabel = SKLabelNode(fontNamed: "Edit Undo Line BRK") 

在功能

func increaseScoreBy(increment: Int) { 
    score += increment 
    scoreLabel.text = "Score: 100" 
    scoreLabel.removeAllActions() 
    scoreLabel.runAction(scoreFlashAction) 
} 

,如果我注释掉scoreLabel.text = “分数:100”,那么它会运行完美,但分数显然不会更新。原本我拥有它(分数),但我将它改为静态文本,看看是否是这个问题。关于为什么会这样做的任何想法?

有一点,如果它的\(分数)而不是100,那么每次分数更新时都会暂停(暂时冻结)游戏,如果它的硬编码,它只会第一次冻结。

update 

在游戏中设置

scoreLabel.fontsize = 50 
scoreLabel.text = "Score: 0" 
scoreLabel.name = "scoreLabel" 
scoreLabel.verticalAlignmentMode = .Center 
scoreLabel.position = CGPoint(x: size.width/2, y: size.height - scoreLabel.frame.size.height + 3) 
hudLayerNode.addChild(scoreLabel) 

scoreFlashAction = SKAction.sequence([SKAction.scaleTo(1.5, duration: 0.1), SKAction.scleTo(1.0, duration: 0.1)]) 
scoreLabel.runAction(SKAction.repeatAction(scoreFlashAction, count: 20)) 

更新

的scoreLabel的初始化这肯定是字体键入一些如何。我删除了fontName,只是做了一个普通的标签,没有问题,但是当然字体是错误的。

回答

0

有人删除的答案所以这里又是

由于

How to cache or preload SKLabelNode font?

在发生了什么事情的提示。虽然名称正确,但我没有将该字体“添加”到应用程序中。要做到这一点点击您的目标和信息选项卡。在客户ios目标属性下创建“应用程序提供的字体”的新密钥。展开它并添加字体名称作为该项目的值。不要忘记将ttf复制到您的应用程序文件夹中,并确保您在执行时都选择了复制和目标。

0

你的问题其实是字体和.text。它看起来像字体被加载,如果需要的话。所以你需要设置一个字体变量来保存你的字体,你可以随时访问,随时随地访问。

let font = UIFont(name: "Edit Undo Line BRK", size: yourSize) 

我建议你在应用程序启动时将它设置并保存在单例中。 然后你就可以访问字体这样的:

let scoreLabel = SKLabelNode(fontNamed: font?.fontName) 

它应该立即采取更短的时间。

+0

我试过这样做,它一直告诉我,gameScene没有字体。我很快就会发现,所以我不确定发生了什么。 – 2015-02-18 13:58:18

+0

您可以导入UIKit使其工作。 – Christian 2015-02-18 14:56:42

+0

它仍然说GameScene.Type没有名为'font'的成员,我在放置声明中放置了font = UIFont(name:“Edit Undo Line BRK”,size:50) – 2015-02-18 15:43:24