嗨,我有一个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。您根本没有重新创建其他视图。
希望能有所帮助。