U3D Addressables异步加载资源,创建大物体卡顿解决方案

     目前做的游戏里,因为是仙侠游戏,特效都是手绘的,需要用到特别多的SPINE文件,一个主角身上可能有上百个动画文件和贴图,创建起来特别特别慢,要四五十秒,试了一下,设置QualitySettings.SetQualityLevel,速度提高也不大,大概20%,那就只能从加载创建本身入手解决了。

首先,测试之前,要先清空U3D缓存。

        Resources.UnloadUnusedAssets();
        System.GC.Collect();

U3D的垃圾回收机制,是这样的,所有的变量,资源,都是先标记,后回收。

标记就是引用计数,当引用计数为0,就标记为未分配状态。

那什么时候回收呢?

1.要分配内存时,内存不够,如果内存用完,会频繁触发GC。

2.写代码强制回收。

3.GC会自动的触发,具体怎么自动触发,没找到资料。

这就是为什么,第一次Resources.Load加载图片后创建物体,再删掉它之后,再次创建会非常快,因为删除,只是标记物体的贴图等资源,引用计数为0,可以回收,但还没到执行GC的时候,所有再次Resources.Load,是直接使用,不会再去读取贴图。

 第一,试了一下Resources.LoadAsync。

        //Resource异步加载
        ResourceRequest prefab = Resources.L

猜你喜欢

转载自blog.csdn.net/u012322710/article/details/126053336
今日推荐