我想知道如何在SpriteKit中添加更多的场景。如果我在GameViewController中使用从SpriteKit生成的代码行
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene 但是,如果我创建了一个也是SKScene类型的类,并将其添加到SKView中,则可以很好地工作。
let newscene = GameMenu()
skView.presentScene(newscene)这是行不通的。它只显示一种褪色的灰色,只有一小部分节点,但实际上什么也没有出现。SpriteKit使用unarchiveFromFile创建场景的方式有什么问题吗?我甚至没有使用故事板或GameScene.sks。整个游戏都是通过编程创建的。如果我尝试为菜单创建另一个ViewController并使用presentViewController,还有一个问题。当它尝试运行时,我也得到了一个错误,说“无法将'UIView‘类型的值转换为’SKView‘。”我使用与GameViewController类似的相同行对其进行转换。
let skView = self.view as! SKView这就是它一直在折断的线。如果任何人对如何解决这个问题有任何见解,将不胜感激。
发布于 2016-06-18 01:12:14
下面是我通常做的场景:
导入SpriteKit类GameScene: SKScene { override init(size: CGSize) { super.init(size: size) //其他初始化代码}是否需要init?(编码器aDecoder: NSCoder) {super.init(编码器: aDecoder) }//其他函数,如override func touchesBegan,update等。
让scene =GameScene(大小: skView.bounds.size) skView.presentScene(scene)
(应该已经为您创建了skView,但如果不是,则将其:let skView = self.view as! SKView放在viewDidLoad.
let scene = GameScene... etc和内容之前。如果您想要从不同的SKScene而不是从视图控制器呈现场景,请执行以下操作:让scene =GameScene(大小: self.frame.size) self.view?.presentScene(scene)
发布于 2015-05-05 22:22:02
如果你正在以编程的方式构建一个场景,不要试图从一个文件(它可能存储了一个不同的场景)中对其进行单元划分。取而代之的是它的初始化器:例如GameMenu()或GameMenu(size: whateverSize),或者你已经定义的自定义初始化器。
https://stackoverflow.com/questions/30043006
复制相似问题