【发布时间】: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