【发布时间】:2017-11-14 02:49:32
【问题描述】:
如果你在 Xcode 中新建一个游戏模板项目,默认的GameViewController 会使用下面的初始化器来实例化游戏场景:
let scene = SKScene(fileNamed: "GameScene")
模板文件中使用的初始化程序表明这是 Apple 推荐的创建 SKScene 的方法。但是,我在 Stack Overflow 上看到了很多使用 init(size:) 初始化器或简单地使用 SKScene() 的示例。
我想知道哪种方法是创建SKScene 实例的最佳方法,每种方法的优缺点是什么,以及在使用一种方法与另一种方法时要注意的各种缺陷。
我问的原因是我使用init(fileNamed:) 来创建我的游戏场景并构建关卡 1。当我后来尝试使用init(size:) 为关卡 2 创建另一个场景实例时,我遇到了问题。也就是说,如果我使用init(size:) 而不是init(fileNamed:) 创建场景,使用UIScreen 和场景框架的一些位置计算似乎会产生不同的结果。
在更一般的意义上,我想听听非常熟悉使用 iOS 和 SpriteKit 的人关于他们初始化新 SKScene 的首选方式以及使用不同方法的优缺点的意见。
【问题讨论】:
-
我没有完整的答案,但我使用了 fileNamed 重载,没关系,然后我缓存了场景以便于导航
-
部分问题可能是与使用 init(fileNamed:) 从文件加载的场景相比,init(size:) 将使用不同于您预期的默认值进行初始化。例如,您的场景大小会根据您传入的内容而有所不同。您的场景将有不同的名称。它可能是 SKScene 的不同子类。它的锚点可能不在同一个地方。等等。
标签: ios swift sprite-kit initialization skscene