向SpriteKit应用程序添加级别

时间:2014-11-10 05:05:26

标签: design-patterns swift sprite-kit

我正在玩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问题,但也许可以问它可以帮助一些其他可怜的灵魂,他们试图让他们的思绪缠绕在它周围。

1 个答案:

答案 0 :(得分:0)

声明

  var level2 = SKScene.unarchiveFromFile("level2") as GameScene

应该是

  var level2 = GameScene.unarchiveFromFile("level2") as GameScene

这也应该修复“Swift动态转换失败”错误。