gpt4 book ai didi

swift - 预加载场景以防止延迟?

转载 作者:行者123 更新时间:2023-11-30 10:04:07 25 4
gpt4 key购买 nike

大家好,我已经完成了游戏的第一个关卡,但是当我从主菜单屏幕进入第一个关卡时,屏幕总是卡住大约 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

关于swift - 预加载场景以防止延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36990795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com