2

我有一个SKLabelNode设置为显示分数变量,后跟高分变量

scoreLabel.text = "\(score)/\(classicHScoreInt)"

现在,一切都很好,但我希望 classicHScoreInt 字体更小,颜色可能不同。这怎么可能?

classicHScoreInt是(如前所述)一个整数,所以是score

4

1 回答 1

6

您不能将两种字体设置为同一个SKLabelNode实例。相反,您可以编写子类来创建包含多个SKLabelNodes不同字体大小的自定义节点。例如,您的 scoreLabel 可以是以下类的实例。

class ScoreLabel : SKNode
{
    var label : SKLabelNode!
    var scoreLabel : SKLabelNode!

    var score : Int = 0 {
        didSet
        {
            scoreLabel.text = "\(score)"
        }
    }

    override init() {
        super.init()
        label = SKLabelNode(text: "Score : ")
        label.position = CGPointMake(0, 0)
        label.fontSize = 20
        addChild(label)

        scoreLabel = SKLabelNode(text: "\(0)")
        scoreLabel.position = CGPointMake(label.frame.size.width , 0)
        scoreLabel.fontSize = 25
        addChild(scoreLabel)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

}

使用ScoreLabel

let scoreLabel = ScoreLabel()
scoreLabel.position = CGPointMake(100, 300)
scoreLabel.score = 10
self.addChild(scoreLabel)

里面的两个标签从外面 ScoreLabel看是一个单一的标签。可以在 上执行,它会同时影响. 例如SKNodeSKActionsScoreLabelchild label nodes

    scoreLabel.runAction(SKAction.scaleTo(2.0, duration: 2.0))

这会将两个标签一起缩放为一个单元。

于 2015-02-06T02:49:57.257 回答