Swift3 在Swift Spritekit中,每当我从一个场景过渡到另一个场景时,我的sks文件都不会传输?

Swift3 在Swift Spritekit中,每当我从一个场景过渡到另一个场景时,我的sks文件都不会传输?,swift3,sprite-kit,Swift3,Sprite Kit,基本上,我的游戏有一个菜单和一个游戏场景。菜单项位于第一位,如ViewController的viewDidLoad函数所示 有一个简单的菜单屏幕,有一个播放按钮,可以直接进入游戏。以下是我的ToucheSBegind方法中的if块: 但是当它过渡到我的游戏场景时,我的游戏场景的sks文件不会渲染?我的GameSecene.swift中连接到sks文件中精灵的所有变量都丢失了。如何修复此问题?尝试:let scene=SKScenefileNamed:GameScene 让scene:SKScen

基本上,我的游戏有一个菜单和一个游戏场景。菜单项位于第一位,如ViewController的viewDidLoad函数所示

有一个简单的菜单屏幕,有一个播放按钮,可以直接进入游戏。以下是我的ToucheSBegind方法中的if块:

但是当它过渡到我的游戏场景时,我的游戏场景的sks文件不会渲染?我的GameSecene.swift中连接到sks文件中精灵的所有变量都丢失了。如何修复此问题?

尝试:let scene=SKScenefileNamed:GameScene

让scene:SKScene=GameScenesize:self.size表示您正在加载GameScene类型的实例。它在任何时候都不会加载任何文件


另一方面,SKScenefileNamed:GameSecene将加载一个文件,只需确保检查sks文件上的自定义类字段是否显示GameSecene

如果让newScene=GameScenefileNamed:GameSecene{…}如果将GameScenesize:self.size更改为GameScenefileNamed:GameSecene,会发生什么?正如大家已经指出的,GameScenesize:self.size不加载SKS文件,它只加载SKS文件后面的类。名为initializer的文件是唯一加载单独文件的文件。作为旁注,您可以使用sks中的customClass字段来定义需要加载的类,并让scene=SKScenefileNamed:gamesceen希望您不介意,我更正并清理了您的答案,以便您可以获得一些投票
override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = MenuScene(fileNamed:"MenuScene") {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .aspectFit

        skView.presentScene(scene)
    }

}
if node == playButton {
            playButton.size.height=playButton.size.height+30
            playButton.size.width=playButton.size.height+30
            if view != nil {


                let transition:SKTransition = SKTransition.fade(withDuration: 1)
                let scene:SKScene = GameScene(size: self.size)
                self.view?.presentScene(scene, transition: transition)
            }
        }