preloadScene的进度回调 有设计缺陷,怎么限制回调频率?

版本245
请问 在场景预加载过程中 是如何被触发回调的?什么频率?
官方你自己试试 你们现在没有控制回调的频率,导致界面UI显示被这个回调给完全占用了
UI显示不能线性变化,这个是个设计问题,你看到的现象就是进度开始是0 然后一直停在0 ,然后什么时候突然到了 多少多少,其实加载时在正常进行的 但你把UI的TICK给完全占用了,导致UI的显示不能被触发了,就看到是卡顿了 请问 怎么解决?

拿到的progress值,你也可以用一个tween的to方法实现在一段时间内的加载啊,不然回调的数值就是不均匀的

引擎只是触发了你传入进来的回调函数,回调的频率就是每加载到一个资源就回调一次,你在回调里面做了什么

我不用在回调里做任何事情,我只是给UI显示记录一下当时的进度数值大小 ,就是个赋值操作,然后你调试一下 看你的回调的频率和主UI显示的频率是个什么比例 就知道了,几乎没有主UI显示的触发了 都被回调给死循环的占用了 ,你自己试一下试就知道了 应该说一直就有这个现象 不是这个版本才有的

你加载了多少个资源?

你认为和加载多少资源有关系吗 加载1个字节和加载1个G,有什么区别吗
你现在的问题是 你一旦开启了进度回调,那么你现在的机制是 不加载完成 几乎不会给主UI TICK的机会的,所以导致加载时正常的 而界面显示不正常了,
那么你应该设计成 就算加载1个G的资源 好,你加载吧 加载的过程中 主UI 继续按50FPS显示着 或者30FPS呢 也行,至少主UI 是能TICK的还 是均匀的线性的,那么你看看 你现在的机制是什么呢?

这里跟回调应该没关系,就是加载流程阻塞时间太长导致渲染不流畅了,即使没有进度回调,UI 的渲染应该也不流畅

我认为 就是回调的问题,以为你关闭这个回调 UI显示就正常了 虽然PFS会有影响 但也是均匀的至少,
一旦你开启了回调,因为你调试这个过程 始终能看到回调一直被触发 而主UI 没有被触发,回调能被一直触发 说明加载流程并不是阻塞的,而是你回调的机制哪里出了问题,

因为你调试这个过程 始终能看到回调一直被触发

能看到触发的调用栈么

我在回调里 打印个输出 不就看到了吗
你在回调里打印个输出 然后在主UI里打印个输出 ,你始终能看到回调的输出 而再也看不到主UI的输出了 你认为是哪里出了问题?
然后你一旦关闭了这个回调 主UI输出又都正常了 你认为是哪里的问题?

我猜 问题就出在这里,如果加载是持续的 那么很容易导致主UI就不在被触发了 因为一直都在干你的回调了,这也就是看到的主UI显示停滞的原因了
这个进度回调的应该只是主线程主UI的一个附属品而已,你不应该影响主UI的进行,主UI可以不去管这个回调 而不能说让回调影响了主UI的进行

了解,我们之后会把调用改为一帧一次

所以这个改了吗,原生加载稍微大点的场景,直接卡死1-2秒,进度回调是会回调,但是UI渲染不出来啊