否则如果条件没有执行语句

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个条件都有效.

我确实尝试使用> =但这与>具有相同的效果.

任何人都知道为什么会这样吗?

Ale*_*ica 5

您可以使用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)