2015-05-16 66 views
0

如何在SKScene加載時切換到UIViewController,反之亦然?到目前爲止,我已經能夠實現NSNotificationCenter來告訴我的GameViewController切換,但是我無法運行實際更改Scenes的代碼。這裏是我的GameViewController.swift文件:如何在Swift中切換SKScene和UIViewController

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 
} 
} 

任何幫助,非常感謝。

+1

你是指從SKScene切換到視圖控制器?場景顯示在視圖控制器中... – Kendel

+0

在我的遊戲中,我必須切換到常規UIViewController才能顯示未在SpriteKit中製作的應用程序的另一部分。我使用瞭如下所示的hamecanecha相同的代碼,但是當我嘗試從UIViewController切換回SKScene時,出現內存泄漏。 – jwade502

回答

-1

退房:How to dismiss SKScene?

我沒有測試這些問題的答案,但嘗試出來的時間。請記住,UIViewController包含SKView,因此通過更改當前視圖控制器,您也將移除當前的SKView。 嘗試使用segue進入另一個SKView。

如何從視圖控制器加載場景?它已經在你的代碼中:

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)) 
+0

我試過使用這個相同的確切代碼,但是當你像這樣切換時會出現內存泄漏。我在展示的UIViewController停留在我假設的內存中。我試圖調用self.artboardViewController.dismissViewControllerAnimated(true,completion:nil),但內存仍然很高。 – jwade502

+0

你有沒有在我給你看的問題上試過一切?有很多答案,包括加載一個零場景等。你確定他們都有內存泄漏?儀器中真的存在內存泄漏嗎? –

+0

是的......似乎我的SKScene被正確解僱,這是當我試圖切換回SKScene時留在內存中的UIViewController。 :/每次我嘗試去增加約70mb的內存泄漏,這很奇怪,因爲artboard ViewController現在只有一個按鈕。 – jwade502

相關問題