Связывание SKScene с UIViewController

Когда вы создаете новый игровой файл в swift, по умолчанию вам предоставляется файл GameScene.swift, файл GameViewController.swift и UIViewController на вашем main.storyboard. В моем коде я создал еще один SKScene (похожий на уже существующий GameScene), и у меня возникли проблемы с его связыванием с другим UIViewController, который есть у меня в main.storyboard. Я хочу сделать это, потому что мне нужно перейти от моей GameScene к этой новой сцене, а затем к моему Main ViewController/Initial Viewcontroller

Как правильно связать SKScene и ViewController?

Ниже приведен файл EndSceneViewController.swift, а затем файл EndScene.swift, с которым я хочу связать его.

import UIKit
import SpriteKit

class EndSceneVC: UIViewController{


    override func viewDidLoad() {
        super.viewDidLoad()


        if let scene = EndScene(fileNamed:"EndScene") {
            // 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 = .AspectFill
            scene.viewController = self
            skView.presentScene(scene)

        }
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
            return .AllButUpsideDown
        } else {
            return .All
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    override func prefersStatusBarHidden() -> Bool {
        return true
    }
}



import SpriteKit

class EndScene : SKScene {
    var viewController : UIViewController?

    override func didMoveToView(view: SKView) {
        print("hello")
    }

}

person Harrison Newman    schedule 22.06.2016    source источник


Ответы (1)


Вы хотите переходить от сцены к сцене, переключая контроллеры?

Корневой ViewController может быть выбран из отображаемой в данный момент SKScene — вам не нужно добавлять другое свойство в вашу сцену.

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        let viewController = self.view?.window?.rootViewController
    }
}
person mikem    schedule 22.06.2016