嗨,我有一个spriteKit游戏设置,每当用户死了,我会得到一个弹出式的视图控制器与重试按钮和一些IAD设置。
我有一段视频到viewController,还有一段视频从VC到gameViewController。
当我调用“展开”函数时,我会基于不同的原因重新初始化场景。我的问题是,我是在创建最终会导致崩溃的视图,还是正确地重新初始化场景。我从viewDidLoad中获取代码并将其放入一个名为“setUp()”的函数中,然后从unwindSegue调用该函数。
检查一下:(全部在GameViewController中)

  var currentLevel: Int!
var gameScene = GameScene()

override func viewDidLoad() {
    super.viewDidLoad()

    currentLevel = gameScene.currentLevel
    setUp()


}
 @IBAction func perpareForUnwind(unwindSegue: UIStoryboardSegue) {
    setUp()
}

func setUp() {

    if let scene = GameScene.level(currentLevel) {
        // 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

        skView.presentScene(scene)

        scene.viewController = self

    }
}

最佳答案

如果正确使用展开段,则不会创建新的视图控制器。从表面上看就是这样。如果您仍然不自信,您可以注销println(\(self))并确保它(我的swift已生锈,但我认为这是您注销它的方式)。
您的问题标题询问有关视图控制器的信息,但问题信息询问有关创建其他视图的信息。这也不是问题。当你这样做的时候

let skView = self.view as SKView

您正在获取视图控制器的当前视图,并将其转换为SKView。您根本没有重新创建其他视图。
希望能有所帮助。

10-08 08:07