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 –