我正在玩spriteKit,正在开发一款简单的2d地牢式游戏,其中英雄从最低级别移动到迷你级别,每个都由一个屏幕代表。想想the first Zelda game的风格。
观看了spriteKit上的WWDC视频,尤其是2014年的最佳实践视频,我一直在考虑构建游戏的最佳方式,在我看来,最好的方法是拥有一个& #34; GameScene"提供所有级别逻辑的类,以及一组.sks文件,每个级别一个。这将让我以图形方式构建每个屏幕的设计,构建不同的障碍,敌人的位置等。加上一些plist,它应该让我不用硬编码数据。
但是,我有一个时间加载级别的恶魔。例如,现在我尝试使用以下代码来触发级别1和级别2之间的转换。
func transitionToLevel2(){
var level2 = SKScene.unarchiveFromFile("level2") as GameScene
var transition = SKTransition.pushWithDirection(.Left, duration: 1.0)
self.scene?.view?.presentScene(level2, transition: transition)
}
根据我对这个股票模板的AppDelegate.swift文件中对SKNode的扩展的理解,这应该允许加载名为level2.sks的可视文件中的内容作为GameScene的一个实例。但是当它运行时,似乎有某种异常被触发,应用程序暂停让我知道" Swift动态转换失败"。 level2加载,但仅作为SKScene加载,而不是作为游戏场景加载。
那么,我的代码是错误的,还是仅仅是因为我使用了错误的方法?
我觉得这是一个完全的noob问题,但也许可以问它可以帮助一些其他可怜的灵魂,他们试图让他们的思绪缠绕在它周围。
答案 0 :(得分:0)
声明
var level2 = SKScene.unarchiveFromFile("level2") as GameScene
应该是
var level2 = GameScene.unarchiveFromFile("level2") as GameScene
这也应该修复“Swift动态转换失败”错误。