《仙剑奇侠传6》中如何提高加载速度?下面为大家带来玩家“Nukepayload2”分享的解决方法,感兴趣的玩家们一起来看看吧。
游戏中有大量UnityWeb格式的资源文件和其它被压缩的unity3D资源文件。
UnityWeb使用LZMA格式压缩,就是大家常用的7zip压缩中的一种。
7z压缩和解压都极慢,大家是知道的。作为一个离线的游戏,不应该使用这种高强度压缩过的资源文件。
以下是加载速度对比:
我编写了基于.net framework 4.5的unity3d文件分析器,它完全加载文件时整个文件会被读取到内存,压缩的部分会解开压缩。如果有序列化的类型树就会分析类型树。
为了减少JIT时间的干扰,我安装了RynJIT优化器。
运行时用Debug编译方式,脱离调试器执行。
我随便找了仙剑6的一首音乐的资源文件。大小是3261kb。
反复加载3次,最快一次加载用时1125毫秒,最慢1534毫秒。
再看看加载相对较快的穹之扉。穹之扉使用了未压缩的UnityRaw格式。
找了一首歌的资源文件,3349kb.加载三次,最快的一次仅仅用了31毫秒。最慢的首次加载也只用了107毫秒。
所以,要优化加载速度和减少切换场景的卡顿就要使用未压缩的或者轻度压缩的资源文件格式,而不是用这种强力压缩的文件格式。
解压缩使用开源库SevenZip。
不要质疑解压的效率问题。我用的库与开发团队用的是一样的。