我想在新游戏中使用SKLightNode。如您所知,iOS 7.1不支持SKLightNode。我仍然希望将其用于8.0或更高版本的计算机。 7.1以下的用户将必须在没有灯光效果的情况下播放。

为了能够在更新方法中更改LightNode的位置以及与某些对象发生碰撞时,我希望将变量设置为全局变量。

var light:SKLightNode!

我知道如何获取iOS版本,但是使用上面的代码行已经使我的应用程序在7.1崩溃,然后我才能验证它是否可以工作。

如何仅在使用iOS 8或更高版本时初始化此变量?
我正在使用Swift和SpriteKit。

谢谢你的帮助,
米奇

最佳答案

我可以想象解决此问题的唯一方法是将SKLightNode存储为Any?。如果不是nil,则进行铸造:

var light: Any? = {
    let iosVersion = NSString(string: UIDevice.currentDevice().systemVersion).doubleValue
    return (iosVersion >= 8 ? SKLightNode() : nil)
}()

if let light = light {
    println("yeah, we have \(light as SKLightNode)")
} else {
    println("nay, we have nothing")
}

07-27 22:14