[英]How do I transition back to the GameScene in SpriteKit?
我有一个带有两个场景的SpriteKit游戏。 一个GameScene和一个PlayScene。 我在两个场景之间过渡。 最近,Xcode提示我将此代码添加到我的GameScene中,即使在游戏平稳运行之前不需要它也是如此。
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
当我编写以下代码以从GameScene过渡到PlayScene时,Xcode不会抱怨:
var scene = PlayScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.size = CGSizeMake(1536, 2048)
skView.presentScene(scene)
但是,当我使用几乎相同的代码转换回GameScene时,出现错误消息:
var scene = GameScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.size = CGSizeMake(1536, 2048)
skView.presentScene(scene)
错误消息:无法将表达式的类型'(size:@lvalue CGSize)转换为'GameScene?'
我删除了required init?
从GameScene退出,错误消失了,但是Xcode给了我另一个错误,除非我放入required init?
背部。
以前我可以在没有required init?
情况下运行我的游戏required init?
但是还有其他代码块。
编辑:这是GameScene
构造函数代码。
//called in viewDidLoad()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as SKView
scene.size = CGSizeMake(1536, 2048)
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
有趣的是,我和您有同样的问题。 我花了一段时间,但我通过将其添加到GameScene来解决了这个问题:
override init(size: CGSize) {
super.init(size: size)
}
试试看!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.