分享一些Unity资源修改中的一些问题
本篇文章我将分享一些个人在修改ab包上的的心得。
1.修改ab包后,相比原来的包,体积大了很多。
一般来讲,ab都是经过压缩的,在使用UABE时首先会把ab包解压,之后的修改都是针对解压后的ab包。
UABE的保存默认是不会压缩的,如果要想把ab的体积缩小,就需要用UABE进行压缩功能。
拓展一点压缩知识
unity的ab包有两种方式,分别是lzma和lz4。
lzma的优点是压缩率高,缺点是加载速度极慢,还会占用较大内存。
lz4的优点是加载速度快,相比lzma内存占用低,缺点是压缩率一般。
如何选择呢?根据我的经验,无脑lz4就行。
使用lzma有些ab包体积太大的话,游戏加载会非常慢,跟lz4相比会相差好几个数量级的时间。

2.在替换字符集时可能会出现的问题(TextMeshPro)
先大致讲一下流程:
1.定位3个文件(Monobehaviour,对应的字符图集,对应的Material材质)
2.确定指针,Monobehaviour中包含的指针信息需要记录,字符生成信息,需要稍微有点印象。
Material中的指针需要记录。
3.用对应版本的unity生成字符集,打包成ab包
4.针对生成的字符集重复1步骤,修改Monobehaviour中的所有指针和Material中的指针。
5.将修改好的后Monobehaviour,字符图集,Material,导入。

问题1:上面的流程走完后,运行游戏,游戏直接报错。
重新检查指针,是否所有指针都已经修改到位。
问题2:游戏能运行,字体也显示了,但是字体背景中有其他字的黑色阴影。
检查Material是否替换,检查Material中的指针是否全部修改到位。
问题3:字体成功显示,但是显示的字周围出现了其他字的边角。
生成字体时的padding太小
问题4:字体成功显示,显示的字体都有白底。
生成字体过大(如2048*2048的图集,里面只有几个字并占满整个图集)。

3.Unitypy打包体积较大ab包中遇到的问题,ab包未压缩状态超2g和超4g(以后可能会修复)
如果一个ab包解压后超过4g,Unitypy只能加载,无法重新打包,打包时会报错。
如果一个ab包解压后超过2g,Unitypy无法用lz4压缩,压缩会报错。
具体原因:作者代码偷懒,有能力可以自行修复
小提醒:未压缩状态如果超4g,需要确认内存是否有16g以上,并且设置足够大的虚拟内存。否则包在加载过程中内存溢出就会报错。