【问题标题】:Linking an SKScene to a UIViewController将 SKScene 链接到 UIViewController
【发布时间】:2016-06-22 12:53:29
【问题描述】:

当您在 swift 中创建新游戏文件时,默认情况下,您会在 main.storyboard 上获得一个 GameScene.swift 文件、一个 GameViewController.swift 文件和一个 UIViewController。在我的代码中,我创建了另一个 SKScene(类似于已经存在的 GameScene),我无法将它链接到我在 main.storyboard 上的另一个 UIViewController。我想这样做是因为我需要从我的 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")
    }

}

【问题讨论】:

    标签: uiviewcontroller skscene


    【解决方案1】:

    您想通过切换控制器从一个场景移动到另一个场景?

    根 ViewController 可以从当前显示的 SKScene 定位 - 您不必向场景添加其他属性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      相关资源
      最近更新 更多