2015-12-08 31 views
1

這裏是我的問題:儘管做這些:SpriteKit載入紋理第一時間差,即使預加載

1)預加載所有的紋理地圖

2)具有存儲在單身我的圖冊,使他們不設置由ARC

3)具有存儲在辛格爾頓

SpriteKit添加敵人到我的現場只有他們第一次添加時,仍然有很短的「滯後抖動」我所有的動畫陣列。紋理繪製一次後,紋理添加到場景時再也不會再滯後。當紋理最終在屏幕上繪製時,可以看到內存正在增加,看起來他們沒有被預加載。

我目前預載我所有的紋理圖集在我使用的啓動AppDelegate中......

 SKTextureAtlas.preloadTextureAtlases(primaryAtlas, withCompletionHandler: {() -> Void in 

     }) 

primaryAtlas是我地圖集的所有4個被存儲在一個Singleton的數組。

讓我指出一些我已經試過的東西以及我目前的設置。

1)幀的用於我的動畫的陣列存儲在單身並且從在不同的單的圖譜得到他們的圖像。他們曾經是在同一個單身人士。

2)我試圖儲存我在辛格爾頓的所有紋理其中全部從地圖集加載。但是目前我的動畫是存儲的,而我的單個紋理是從地圖集中獲取紋理的函數。

3)我已經關閉了所有動畫的敵人(不運行SKAction),當他們加入,而不是動畫抖動仍然發生。

我一直在試圖解決這一問題的一個很長的時間,有誠實似乎沒有解決的辦法。

似乎有一個類似的StackOverflow問題,我發現這裏沒有答案:Spritekit: First texture draw slow (preloaded)

下面是一些分析我和儀器做的圖片。 Instruments capture

+0

只是嘗試預加載的紋理,他們將被釋放,並當你的紋理加載完成時,不同線程中的敵人不會使用相同的線程使用該線程添加新的線程和敵人,或者可以共享您的代碼。 – dragoneye

+0

試過了。不起作用。我不明白這一點。我在後臺線程上運行它,但仍然在第一次繪製時出現抖動。 – lespommes

+0

@lespommes你能找到解決方案嗎?我遇到了同樣的事情(iOS 9+)。 – damirstuhec

回答

0

確保您的紋理地圖作爲單獨的類特性,因爲如果你創建在其內部做預壓法範圍紋理圖集的變量,之後方法返回