声明没有类型的变量

时间:2017-10-09 20:57:05

标签: ios swift class variables skscene

我正在制作游戏,我有不同的游戏模式。这些游戏模式分为不同的类别。当用户选择游戏模式时,在代码中使用相应的类。但是,对于任何游戏模式的操作我都使用了场景。有没有办法使用一个变量或者我必须使用多个?

以下是处理游戏模式的ViewController:

class GameViewController: UIViewController {

let classic = GameScene(fileNamed: "GameScene")
let timed = Timed(fileNamed: "Timed")
let endless = Endless(fileNamed: "Endless")
var scene: SKScene?

init() {
    if (gameMode == "Classic"){
        var scene = classic
        print("Classic")
    }
    else if (gameMode == "Timed"){
        var scene = timed
        print("Timed")

    }
    else if (gameMode == "Endless"){
        var scene = endless
        print("Endless")

    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let yourVC = segue.destination as? Postgame {
        yourVC.score = scene!.score
    }
}

2 个答案:

答案 0 :(得分:0)

Swift变量必须有一个类型。否则,编译器将如何知道你可以用它做什么?

在这种情况下,它显然具有score属性,因此您应该使用该协议:

protocol GameMode {
    var score: Int { get }
    // and whatever else is common to these classes
}

答案 1 :(得分:0)

从理论上讲,你可以选择:

var score: Any!

Any表示任何类型的任何内容。

除此之外,您似乎正在寻找(并且基本上是在谈论)战略设计模式。这似乎是解决任务的正确方法。 简而言之:定义一个协议,通过所有策略实现它,使用你需要的协议,通过协议统一的名称调用方法。

请阅读:Strategy Design Pattern in Swift