目前做的游戏里,因为是仙侠游戏,特效都是手绘的,需要用到特别多的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