我在SpriteKit中構建了一個遊戲,並且最近遇到了問題,我的幀速率不斷從60開始下降到50-45,僅在GameScene
和打開GameScene
from我的StartScene
。我嘗試了一堆不同的東西,我相信我的一個主要問題是與動畫生成頻繁產生的SKSpriteNode子類有關,當我停止對它們進行動畫製作並使用單個紋理時,幀速率保持在60.我之前爲posted關於將紋理預加載到SpriteKit中,並收到真棒答案,但我可能還沒有完全理解。在這一點上我有我所有的GameScene
紋理單一Atlas和我通過之前我GameScene
創造的每一項權利常數加載它們都在:SpriteKit現場轉換滯後和預加載後的幀速下降
//Preload textures of GameScene before running it
let alienTexture1 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture1")
let alienTexture2 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture2")
...
class GameScene: SKScene, SKPhysicsContactDelegate {
我知道,我應該使用:
SKTextureAtlas(named: "YourTextureAtlasName").preloadWithCompletionHandler {
// Now everything you put into the texture atlas has been loaded in memory
}
預加載紋理,但我不確定括號和當像let alienTexture1 = SKTextureAtlas(named:"Sprites").textureNamed("alienTexture1")
這樣的行應該被調用時會發生什麼。這些紋理然後在我有的一些Alien SKSpriteNode子類的init
中被調用。我不理解某些東西,因爲預加載顯然無法正常工作。我也不確定在切換到GameScene
時如何處理延遲,但我想這也與我在開始時加載紋理的方式有關,其中包括所有這些let
聲明。任何建議都會很棒。
我看過關於這個問題的其他問題,並覺得這是足夠具體,它不是重複。