连加载进度条都冻结了,请高手帮忙解惑

先说明一下,在游戏一开始的时候,
我已经预先载入所有的prefab,放进一个Array之中,
在需要的时候再以 cc.instantiate 创建实例

但是游戏还是卡的很严重,
例如在Scene切换的时候,
或是在大量创建prefab的时候,
例如有一个瓦片地图,大概创建了 100个左右的prefab,
整个画面就会卡住约2-5秒,

有尝试做一个进度条,放在最前面,希望可以减缓使用者等待的心情

但是…这个进度条里面有一个旋转的图形,
结果连这个旋转的图形都整个冻结了 :scream:

连我都觉得整个游戏是不是死了…更何况是使用者

想请教各路大侠,
该如何实作才能让加载的过程中,至少进度条不要卡住呢?

感激不尽

创建了 100个左右的prefab的时候导致大幅度掉帧了,所以进度条执行看起来就慢了,进度条本身是没有问题的

要么就使用静态的UI(或者先动后静),这样卡帧了,画面不动,也不怎么能看出来
还可以考虑别的方式,比如先显示瓦片地图,然后prefab分开逐个添加显示,避免大量操作同时堆积在一起执行,优化prefab结构,节点树尽可能的减少

1赞

谢谢前辈的指点,
了解您的意思,

目前就是用静态图片做为加载过程的图片,
但是因为加载实在太久,所以看起来才像是程序死了:joy:

我目前有个想法,今天会试试

实作一个常驻节点,在加载常驻节点的时候,
分批加载未来场景所需要的prefabs,中间使用setTimeout做一点延时
在场景初始化后,再把这些prefab加入场景,
并且在切换场景之前,把这些prefab回收,加入常驻节点

不晓得这样做是否有帮助?

如果我做,我会光加载场景(附带瓦片地图),传递数据,prefabs和附带的资源,设置延迟加载,在场景之后才开始动态的加载

1赞

素材资源的加载要避免卡在加载场景里,能和场景分开的尽量分开,音效也是,音效不要挂节点上,否则也会影响场景的载入速度

1赞

话说你是啥prefab啊,居然要一下就100多个

1赞

我有个prefab,里面有25个单位(小prefab),然后这个prefab文件就300多K了,最后我把里面的25个单元都删掉了,prefab文件就30多K了,不是固定UI的最好代码动态创建。
你可以提前预加载好你的游戏场景,等切换场景过去了,再根据配置和传递的参数,加载地图和其它

1赞

谢谢前辈的指教,

我原本没有注意过prefab文件有多大,刚刚看了一下,大概59KB,
不过这个是定义档,实际载入到内存后,大小应该不同吧

因为我是在画面上放一个瓦片地图,
然后自已产生prefab做为建筑或地形物件,再赋与事件
所以才会需要产生不少prefab,

我目前大部份的资源都是用动态加载的,
但或许就是因为动态加载,一次加载太多才会导致冻结画面的情况:scream:

原本是想透过先放在场景里,
在加载场景的时候显示进度条来解决,
所以才提出了这帖的疑问

现在看起来,主要问题点还是在prefab的建立,
或许我应该想个办法,从逻辑面做解决,

或许做分批产生,再分批显示到画面上,
虽然会让玩家觉的显示有点慢,但总比整个画面卡住要来得好

如果建筑是固定的,那还是直接放在场景里比较好

1赞

固定风景一类的建筑当普通图片处理,你为啥不把所有的建筑都包含在瓦片地图里,然后读取地图上面的数据,动态赋值方法

1赞

我还以为你是战棋游戏

1赞

要地图实在大,那就得动态了,摄像头在哪里,就填充哪里

1赞

建筑跟风景都是动态的,因为每一张地图的资料会不同
都是储存在资料库,在玩家进入的时候才显示

我是类似战略游戏
地图会随着地图的设定而不同大小

所以您说的没错,采用动态填充的方式应该是最佳解

目前打算像上面说的一样,先创建约100个左右的prefab,
接着就是摄像头在哪里,就填充哪里的画面

感谢前辈的指点,
您一开始就指出问题了,是我没有注意到prefab的集中创建会导致画面卡顿

再次谢谢你 :grinning: