0
你好我已經做了我的遊戲的第一級,但總是當我從主菜單屏幕到第一級屏幕凍結像2秒,從主屏幕轉換到遊戲是非常遲緩和遲緩有時甚至沒有出現。有沒有辦法在背景中預先加載場景以防止延遲?預加載場景以防止滯後?
你好我已經做了我的遊戲的第一級,但總是當我從主菜單屏幕到第一級屏幕凍結像2秒,從主屏幕轉換到遊戲是非常遲緩和遲緩有時甚至沒有出現。有沒有辦法在背景中預先加載場景以防止延遲?預加載場景以防止滯後?
您可以在不同的線程中加載場景的資源。儘管事實上我正在加載大量資源,但我在我的遊戲中做到了這一點,以獲得真正活潑的場景轉換。
使靜態函數場景中的類預加載場景
class func createResources(withCompletion: (scene: BaseScene) ->()){
// load resources on other thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
let scene = YourScene()
// callback on main thread
dispatch_async(dispatch_get_main_queue(), {
// Call the completion handler back on the main queue.
withCompletion(scene: scene)
});
})
}
這樣稱呼它
YourScene.createResources(withCompletion: {
[weak self]
scene in
self!.skView.presentScene(scene)
})
所以使用這個是建立場景的方式在不同的線程上前進。因爲它在不同的線程上運行,你不應該得到那種尷尬的停頓。例如
。可以說玩家達到了擊敗關卡的目標。在我使用這種方法之前,遊戲會在加載下一個場景之前暫停一秒。
當玩家現在擊敗關卡時,我仍然允許他們四處移動,直到下一個場景加載完畢,然後玩家立即進入下一關並創建即時轉換。
你可以在這裏看到它,當船超級間隔。有很多資源加載,但轉換是無縫的。 https://www.youtube.com/watch?v=u_bXA3woOmo
我不知道你的代碼是什麼樣的,但是我要做的是在主菜單屏幕加載後開始在後臺渲染它,然後刪除主菜單。渲染它有點像你的世界中的2D對象。你應該做的是在這些情況下提供你的代碼的MCVE樣本。 – DarmaniLink
而我該如何在後臺渲染它? –
也意味着MCVE? :d –