在 GameViewController.swift 中,我找到了这一行
if let scene = GameScene(fileNamed:"GameScene") {
而且我一直认为,如果我想加载 GameScene.swift 以外的东西,我只需将“GameScene”更改为“LandingPage”,一切都会正常进行。然而,正如我最近发现的那样,这里的“GameScene”实际上是指 GameScene.sks 而不是 swift 文件。
我希望制作一款具有多个级别的游戏,每个级别都写在自己的 swift 文件中。我应该去哪里/如何从 level1.swift 移动到 level2.swift?
最佳答案
如果你在一个场景中,例如关卡选择场景,比方说LevelSelectionScene.swift
,你可以通过SKView
的-presentScene转到另一个场景:transition:
方法。
class LevelSelectionScene: SKScene {
override func didMoveToView(view: SKView) { /* ... */}
func selectLevel(level: Int) {
let fadeTransition = SKTransition.fadeWithDuration(0.3)
if let selectedLevel = createLevelSceneWithLevel(level) {
self.view?.presentScene(selectedLevel, transition: fadeTransition)
}
}
// Not a good idea if you progressively adding new levels,
// it's totally depend on how you gonna organize your levels.
// Since its level input is not arbitrary, the output of this
// rarely nil, if it does, it must be the developer mistake.
func createLevelSceneWithLevel(level: Int) -> SKScene? {
let levelScene: SKScene?
switch level {
case 1: levelScene = Level1()
case 2: levelScene = Level2()
default: levelScene = nil
}
return levelScene
}
}
关于xcode - 如何在我的 GameViewController.swift 中加载不同于 GameScene.swift 的 spritekit 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914274/