NeighborhoodViewControllerというviewControllerが1つあります。これは、NeighborhoodScene.sksというシーンをviewControllerにロードします。これは絶対にうまくいく。 NeighborhoodViewControllerを通して、シーンの特定のノードからセグを作り上げました。これらの2つの機能によって次のことが制御されます。presentSceneが読み込みに間違った表示を引き起こしています
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は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ためrestorationidentifierをプリントアウトした場合、それは完璧ですSearchViewController、内のビューに関係します。それはすべて、SkView.presentScene(selectedScene)まで無作為に設定されているようですが、NeighborhoodViewControllerを設定しているようです。 SearchViewControllerと関連するsksシーン - SearchScene1を呼び出すにはどうしたらいいですか?
複数のビューコントローラを使用すると、このような複雑なアプローチが必要なのはなぜですか?通常、スプライトキットのゲームでは、最初のシーンをロードするGameViewControllerを1つだけ使用します。シーン内で1つのシーンから別のシーンに直接切り替えるよりも、 – crashoverride777
私は、基本的には、6対7の完全に別々のゲームを構築しており、それぞれのゲームにはまったく似ていないからです。それぞれのビューコントローラを持つことは、私が各ビューを別々に扱うことができるような良い計画のように思えました...私は、異なる環境で同じゲームの仕組みを使いたいならば、異なるシーンのためにいくつかのgamecene.swiftデータを再利用したかったのです。 – illuminatedtype