2014-11-22 71 views
0

我做了一個快速SpriteKit遊戲,但現在我想添加一個菜單場景(最終失敗的場景)。所以我做的是斯威夫特多場景

  1. 我創建了一個名爲菜單場景的新場景。

  2. 我編輯GameViewController並將其更改爲加載菜單場景(它的工作)。

  3. MenuScene.swift我把一些代碼,所以被點擊它會運行這段代碼精靈時:

    let reveal = SKTransition.flipHorizontalWithDuration(0.5) 
    
    let scene = GameScene(size: size) 
    
    self.view?.presentScene(scene, transition:reveal) 
    

但是,當我點擊按鈕,它圓翻轉到下一個現場並立即崩潰。

所以我的問題是:我是這樣做的正確方法,如果我爲什麼會崩潰?

+0

你會得到什麼崩潰,你可以發佈你的場景代碼 – Okapi 2014-11-22 18:56:16

+0

你是什麼意思「場景代碼」?我知道這些場景是可以工作的,因爲我可以設置GameViewController來默認加載它們,並且它可以工作。 – HarveyBrCo 2014-11-22 20:10:36

+0

您發佈了您收到的錯誤和日誌 – Okapi 2014-11-22 20:12:43

回答

1

事實證明,我並沒有刪除一個粒子發射器,所以我把一些代碼刪除它只是在轉換和它的工作。

+0

當你需要這樣的東西在釋放對象之前被移除時,你總是可以覆蓋deinit – Knight0fDragon 2016-02-04 18:52:08

-2

既然你在精靈套件是,這是錯誤的使用方法:

self.view?.presentScene(scene, transition:reveal) 

你應該做到以下幾點:

let scene = GameScene(size: view.bounds.size) 
let skView = view as SKView 

//skView.showsFPS = true 
//skView.showsNodeCount = true 
//skView.ignoresSiblingOrder = true 
//scene.scaleMode = .ResizeFill 

skView.presentScene(scene, transition:reveal) 
+0

當我把那個有2個錯誤1. SKView?沒有名爲bounds的成員2. Downcast SKView? SKView只解開可選項;你的意思是使用!?當我通過改變view.bounds.size來改正這些錯誤的大小和查看作爲SKView來查看!它只是在我點擊的那一刻崩潰了? – HarveyBrCo 2014-11-22 22:29:29

+1

他的方式如何「錯誤」?這不是我更喜歡的方式,但它實際上比您提供的答案更有效。在OP代碼中,如果視圖爲零,那麼代碼不會崩潰,並且可以稍後處理,在您的代碼中,您必須強制執行該視圖,但某種方式並非零,這不會在此處發佈。 – Knight0fDragon 2016-02-04 18:50:11

-1

如果你這樣做,它應該工作:

let reveal = SKTransition.flipHorizontalWithDuration(0.5) 
let scene = GameScene(size: self.frame.size) 
let skView = view as SKView! 
skView.presentScene(scene, transition:reveal) 

我希望這對你有用。

+0

除強制視圖不爲空外,此代碼不會添加任何內容。它不能解決問題,它只是增加了遊戲剛剛崩潰的原因 – Knight0fDragon 2016-02-04 18:44:52