0 if-statement ios sprite-kit swift
我正在构建一个gameOver场景,如果你达到一定数量的积分,你可以获得1,2或3星.
我写了一个if Condition块,看起来像这样:
var starImage = SKSpriteNode()
if gameScore > 500 {
starImage = SKSpriteNode(imageNamed: "2_stars")
print("You achieved 2 Stars")
} else if gameScore > 1000 {
starImage = SKSpriteNode(imageNamed: "3_stars")
print("You achieved 3 Stars")
} else {
starImage = SKSpriteNode(imageNamed: "1_star")
print("You achieved 1 Star")
}
starImage.setScale(2)
starImage.position = CGPoint(x: self.size.width / 2, y: self.size.height * 0.9)
starImage.zPosition = 2
self.addChild(starImage)
Run Code Online (Sandbox Code Playgroud)
2_stars和1_star工作正常,但else if条件似乎没有执行.
然而奇怪的是,当我用等号(==)替换大于(>)符号时,所有3个条件都有效.
我确实尝试使用> =但这与>具有相同的效果.
任何人都知道为什么会这样吗?
您可以使用a switch来确保永远不会发生这种情况:
let starCount: Int
switch gameScore {
case ...500: starCount = 1
case 501 ..< 1000: starCount = 2
case 1001...: starCount = 3
}
let sOrBlank = (starCount) == 1 ? "" : "s"
starImage = SKSpriteNode(imageNamed: "\(starCount)_star\(sOrBlank)")
print("You achieved \(starCount) Star\(sOrBlank)")
Run Code Online (Sandbox Code Playgroud)