【问题标题】:presentScene is causing wrong view to loadpresentScene 导致加载错误的视图
【发布时间】:2016-09-14 13:16:58
【问题描述】:

我有一个名为 NeighborhoodViewController 的 viewController。它将一个名为 NeighborhoodScene.sks 的场景加载到 viewController 中。这绝对没问题。我已经通过 NeighborhoodViewController 从场景中的特定节点装配了一个 segue。这两个函数控制这个:

func createSegue(title: String) {
    performSegueWithIdentifier(title, sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let viewController: SearchViewController = segue.destinationViewController as? SearchViewController {
        viewController.sceneName = "game_1_1"
    }
}

这一切都很好。正在调用 segue。 segue 是为了调出另一个名为 SearchViewController 的 VC,它应该调出自己的场景 SearchScene1.sks。

代码如下:

import UIKit
import SpriteKit

class SearchViewController: UIViewController {
var sceneName: String?
var chosenScene: GameScene?

override func viewDidLoad() {
    super.viewDidLoad()

    if sceneName == "game_1_1" {
        chosenScene = GameScene(fileNamed: "SearchScene1")
    } // TODO: add the rest of the presented scenes here

    if let scene = chosenScene {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsPhysics = true
        skView.showsFPS = true
        skView.showsNodeCount = true

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

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill
        scene.viewController = self
        skView.presentScene(chosenScene)
    }
}
}

如果我打印出 skView 的恢复标识符,它与 SearchViewController 中的视图有关,这是完美的。在 skView.presentScene(chosenScene) 之前,这一切似乎都运行良好,此时它似乎正在随机设置 NeighborhoodViewController?如何让它调用 SearchViewController 和相关的 sks 场景——SearchScene1?

【问题讨论】:

  • 您的方法使用多个视图控制器如此复杂,有什么特别的原因吗?通常在精灵套件游戏中,您只需使用 1 个 GameViewController 来加载您的第一个场景。您可以直接从场景中的一个场景过渡到另一个场景。
  • 原因是我基本上是在构建六七个完全独立的游戏,它们彼此之间没有真正的相似之处。为每个视图设置一个视图控制器似乎是一个不错的计划,因为这样我就可以以不同的方式处理每个视图......如果我想在不同的环境中使用相同的游戏机制,我还想为不同的场景重用一些 gamescene.swift 数据.

标签: ios swift segue gameplay-kit


【解决方案1】:

segue 用于先引入 nextviewcontroller。

【讨论】:

  • 对不起,你能解释一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多