2015-02-17 109 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