我正在制作游戏,我有不同的游戏模式。这些游戏模式分为不同的类别。当用户选择游戏模式时,在代码中使用相应的类。但是,对于任何游戏模式的操作我都使用了场景。有没有办法使用一个变量或者我必须使用多个?
以下是处理游戏模式的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
}
}
答案 0 :(得分:0)
Swift变量必须有一个类型。否则,编译器将如何知道你可以用它做什么?
在这种情况下,它显然具有score
属性,因此您应该使用该协议:
protocol GameMode {
var score: Int { get }
// and whatever else is common to these classes
}
答案 1 :(得分:0)
从理论上讲,你可以选择:
var score: Any!
Any
表示任何类型的任何内容。
除此之外,您似乎正在寻找(并且基本上是在谈论)战略设计模式。这似乎是解决任务的正确方法。 简而言之:定义一个协议,通过所有策略实现它,使用你需要的协议,通过协议统一的名称调用方法。