Swift: if 语句检查节点纹理是否与另一个节点纹理相同

Swift: if statement to check if Node Texture is the same as another Node texture

有 5 个不同颜色的球。 choiceBall 每次点击都会随机更改纹理(颜色),并指示您必须点击其他 4 个彩色球中的哪一个。我想做一个 if 语句,检查我点击的球是否与 choiceBall 具有相同的纹理,但我似乎找不到可行的方法。

这里我想如果choiceBall变成红色然后我按下红色的球就会打印RED。但这似乎没有发生。我不应该在 touchesBegan 中吗,因为我希望每次 点击 球时打印红色或蓝色或黄色或绿色。

感谢您的帮助。 :)

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
    choiceBall.texture = array[randomIndex]


    if choiceBall.texture == redBall.texture {
        println("RED")
    }
    else if choiceBall.texture == blueBall.texture
    {
        println("BLUE")
    }
    else if choiceBall.texture == yellowBall.texture {
        println("YELLOW")
    }
    else if choiceBall.texture == greenBall.texture {
        println("GREEN")
    }

}

请参阅 this answer on another Whosebug post 了解您可能正在寻找的解决方案。

在游戏架构方面,我建议在 choiceBall 上使用 Color 的枚举(或类似的东西),因为这样你就不会比较实际的纹理,而只会比较类型Color 每个球都是。这将使代码更简洁,您也可能能够从中提取更多功能。

示例:

enum Color {
    case Red, Blue, Yellow, Green
}

[...]

if choiceBall.colorType == .Red {
    println("RED")
}
else if choiceBall.colorType == .Blue {
    println("BLUE")
}
else if choiceBall.colorType == .Yellow {
    println("YELLOW")
}
else if choiceBall.colorType == .Green {
    println("GREEN")
}