如何在Swift中切换SKScene和UIViewController
加载SKScene时如何切换到UIViewController,反之亦然?到目前为止,我已经能够实现NSNotificationCenter来告诉我的GameViewController切换,但我在运行什么代码来实际更改场景方面遇到了问题。这是我的GameViewController.swift文件:如何在Swift中切换SKScene和UIViewController,swift,uiviewcontroller,ios8,sprite-kit,Swift,Uiviewcontroller,Ios8,Sprite Kit,加载SKScene时如何切换到UIViewController,反之亦然?到目前为止,我已经能够实现NSNotificationCenter来告诉我的GameViewController切换,但我在运行什么代码来实际更改场景方面遇到了问题。这是我的GameViewController.swift文件: import UIKit import SpriteKit import StoreKit class GameViewController: UIViewController { ov
import UIKit
import SpriteKit
import StoreKit
class GameViewController: UIViewController {
override func viewDidLoad() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "openArtboard:", name:"OpenArtboard", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "openHomeScreen:", name:"OpenHomeScreen", object: nil)
//Load the initial home screen
let scene = homeScreen(size: view.bounds.size)
let skView = view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = false
scene.scaleMode = .ResizeFill
skView.presentScene(homeScreen(size: skView.bounds.size))
}
func openArtboard(NSNotificationCenter) {
//Dont know what to put here
}
func openHomeScreen(NSNotificationCenter) {
//Dont know what to put here
}
}
非常感谢您的帮助。请查看:
我没有时间来测试这些答案,但请尝试一下
请记住,UIViewController包含SKView,因此通过更改当前视图控制器,您也将删除当前SKView。
尝试使用segue转到另一个SKView
以及如何从viewcontroller加载场景?它已经存在于您的代码中:
let scene = homeScreen(size: view.bounds.size)
let skView = view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = false
scene.scaleMode = .ResizeFill
skView.presentScene(homeScreen(size: skView.bounds.size))
从场景切换到视图控制器是什么意思?场景显示在视图控制器中…在我的游戏中,我必须切换到常规的UIViewController以显示应用程序的另一部分,而该部分不是在SpriteKit中制作的。我使用了与下面hamecanecha所说的相同的代码,但当我尝试从UIViewController切换回SKScene时,会出现内存泄漏。我尝试使用相同的代码,但当您这样切换时会出现内存泄漏。我所演示的UIViewController将保留在内存中。我尝试调用self.artboardViewController.dismissViewControllerAnimated(true,completion:nil),但内存仍然很高。我向您展示的问题中的所有内容您都试过了吗?有很多答案,包括加载零场景等。你确定它们都有内存泄漏吗?仪器中真的有内存泄漏吗?是的……似乎我的SKScene被正确地关闭了,当我尝试切换回SKScene时,UIViewController留在内存中。:/每次我尝试这样做时都会有大约70mb的内存泄漏,这很奇怪,因为artboard ViewController现在只有一个按钮。堆栈顶部应该至少有一个UIViewController占用内存,但你告诉我,每次你呈现一个场景时,你都会丢失另一个70 mb的内存?是的,确实如此:(我想知道是不是因为每次我调用openHomeScreen函数时都会创建一个新的skview?