2015-05-08 87 views
0

所以對於Obj這個問題有一個部分的答案。 C.我只是在Swift中問同一個想法的機制。此外,我想比較和對比切換ViewControllers和切換場景,作爲在遊戲和MainMenu之間切換的一種方式。 Presenting a scene in SpriteKit without discarding the previous?iOS/Swift/Spritekit在該視圖控制器中呈現新場景後,場景是否會刪除數據?

在上面的部分中,作者說,當我在ViewController提出了一種新的場景的場景完全拋棄,這是在spritekit /迅捷真的嗎?我所做的是我有幾個場景(GameScene,MainMenuScene,OptionsScene等),我經常切換作爲完全切換視圖的方式。這會刪除與GameScene的實例相關的所有數據嗎?我不希望這些數據的任何殘餘部分隨着時間的推移而減慢我的遊戲速度。此外,一些人建議切換ViewControllers而不是場景以獲得MainMenu的想法等。每種方法的優點和缺點是什麼?

+0

我使用ViewController作爲我遊戲中的幫助屏幕,我從呈現我的SKScene的同一個視圖控制器中呈現它。當我彈出它時,SKScene就從它離開的地方回來。我會說,如果你可以逃脫使用風險投資,做它 – Toby

回答

1

是的,它會刪除與場景相關的數據,當你呈現一個新的場景,除非你有某種強烈的參考週期。如果你有一個強大的參考週期,你的場景和關聯的對象會留在內存中,你無法訪問它們。不好。

判斷您的場景是否從內存中移除的一種簡單方法是在場景中放置一個deinit方法,並在其中打印一些內容。如果調用deinit,那麼你的場景被刪除。

如果你想在不同的地方看到你的遊戲中存在什麼對象,你可以使用Allocations工具。 您可以在找到它Xcode>開放開發工具>儀器

+0

是一個強大的參考週期,我可以無意中做出? –

+0

剛剛檢查與deinit,看起來像我很清楚 –

+0

一個強大的參考週期是你總是無意中= P – hamobi