我试图在SKLabelNode中存储整数值,但我一直收到一个错误,即我只能存储字符串。稍后我需要它作为一个整数。下面是我的代码:
import SpriteKit
import GameplayKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
var comScore = SKLabelNode()
comScore.fontName = "Pong Score"
comScore.text = 0
comScore.fontSize = 100
comScore.color = SKColor.white
comScore.position = CGPoint(x: 200, y: 220)
comScore.zPosition = 3
addChild(comScore)
}
}非常感谢您的帮助,因为我是SpriteKit的新手。
发布于 2017-08-07 16:32:57
SKLabelNode的text属性是字符串,而不是整型。您可以通过添加引号使其成为字符串:
comScore.text = "0"或者,您可以将Int变量转换为字符串:
comScore.text = String(myIntValue)发布于 2017-08-07 16:49:50
我通过将其初始存储为字符串,然后使用以下代码来回转换来修复此问题:
var comScoreInt: Int = Int(comScore.text!)!
comScoreInt += 1
comScore.text = String(comScoreInt)发布于 2017-08-07 16:56:38
除了关于In和String的其他答案之外,如果你在你的分数上坚持一个属性观察者,你可以在你更新分数时自动更新标签:
var comScoreInt: Int {
didSet{
comScore.text = String(comScoreInt)
}
}编辑:
根据您自己的答案,如果您希望根据score标签中的值初始化score,则将整数score设置为计算属性:
var comScoreInt -> Int {
get {
return Int(comScore.text!)
}
set(newScore) {
comScore.text = String(newScore)
}
}现在您可以检索comScoreInt,它将返回分数标签中的值,并设置comScoreInt,它将更新标签。
https://stackoverflow.com/questions/45542479
复制相似问题