问题描述
我有一个SpriteKit应用程序。我想简单地从一个视图类切换到另一个。在这种情况下,我只想在应用程序中从一个屏幕切换到另一个屏幕,这样您就可以在显示器上显示由按下按钮或代码中的其他逻辑触发的不同内容。
由于遇到一些错误,我在创建第二个GameScene时遇到了麻烦。有人可以提供一个仅从一个场景切换到另一个场景的示例。 这是我尝试开始工作的一些代码:
class GameScene: SKScene {
var player = SKSpriteNode()
var ground2 = SKSpriteNode()
// The main scene that loads just fine and runs. However I want to transition to another scene,the desert scene. With logic from here to there.
}
class DesertScene : SKScene {
// inserting my variables,my logic,CGPoints,you get it.
}
func goToScene(newScene: SceneType) {
var sceneToLoad:SKScene?
switch newScene {
case SceneType.GameScene:
sceneToLoad = GameScene(fileNamed: "GameScene.swift")
case SceneType.TheWoods:
sceneToLoad = TheWoods(fileNamed: "TheWoods")
case SceneType.DesertScene:
sceneToLoad = DesertScene(fileNamed:"DesertScene")
}
}
我不太确定如何在SKS文件之间转换,或者即使我应该创建一个新的swift文件并访问GameScene.swift
解决方法
如果尝试使用相同的视图控制器启动新的SKScene,则将泄漏整个先前的SKS。我以前遇到过这个问题。
您要启动一个新的GameScene。我建议您按照问题中的建议,创建一个新的swift文件并初始化该游戏场景。
在这里查看我的post,这说明了为什么不应该在同一VC中初始化新的SKScene。