我正在构建一个 gameOver 场景,如果您达到一定数量的积分,您将获得 1、2 或 3 颗星。
我写了一个 if 条件 block ,如下所示:
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)
2_stars 和 1_star 工作正常,但 else if 条件似乎没有执行。
然而奇怪的是,当我用等号 (==) 替换大于号 (>) 时,所有 3 个条件都有效。
我确实尝试过使用 >=,但它与 > 具有相同的效果。
有人知道为什么会这样吗?
最佳答案
您可以使用开关
来确保永远不会发生这种情况:
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)")
关于ios - else if 条件不执行语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931706/