美文网首页unity3D技术分享
Unity AB包资源排查

Unity AB包资源排查

作者: 丛小胖有个锤子 | 来源:发表于2020-04-30 00:35 被阅读0次

    原因说明:

    游戏中资源全部打包ab包进行加载。由于对ab包相应规则理解不正确,可能会导致资源重复被打包。下面介绍下我的排查思路。

    资源重复的主要原因 :当ab包打包时,发现依赖资源不再自己的ab包中或者不再其他ab包中,就会复制一份资源到自己的ab包中。

    其他原因

    1. 游戏资源被内嵌到包体中了(一般是Resources文件夹中的资源和依赖资源)
    2. Graphics设置中添加了额外的shader。(这里的shader的一定会被嵌入到包体内,可以使用Shader.Find调用),添加到这里会把所有变体编译,被坑过
    image.png

    1. 准备工作:

    1.1 准备好apk/ipa

    下载游戏的apk包(ipa一样的),将后缀改成zip,解压到文件夹下面。

    image.png

    1.2 下载资源解析工具:

    https://www.perfare.net/1194.html

    1.3 解析资源

    解析解压的文件,我们就可以apk中所有的资源了:

    image.png image.png
     资源解析后如下图:
    
    image.png

    2. 具体说明

    2.1 最多的坑 standard shader (AB包 standard 清理)

    解析资源后会发现有很多重复的standard shader,但是项目中使用的shader都是我们自己写的,根本不会使用系统自带的。最后发现是模型引入的问题。 当模型Materials设置如下两张图的时候,都会讲默认的standard打入到ab包中。

    图一:

    image.png

    图二:

    image.png

    解决方案:

    1. 引入的时候指定具体的材质球和shader (建议使用该方案)
    image.png
    1. 创建一个我们自己使用的材质,给引入的模型
    image.png
    1. 提取需要使用的资源(如:mesh,动作等)后,删除fbx

    2.2 RawImage组件 或 类似组件的问题

    项目使用Packing Tag来组织图集(如图一),RawImage可以直接用原始图赋值(如图二),但打AB包的时候会复制一张图片(如图三)。

    图一:

    image.png

    图二:会生成二外的Texture

    image.png

    图三:生成了额外的Texture

    image.png

    3.其他简单说明

    3.1 使用unity默认shader,导致大量的重复shader

    如下图:

    image.png

    解决方案:

    1. 禁止使用系统默认的shader,自己实现相应功能的shader,将shader文件放在同一AB包中。

    3.2 图集的结构问题

    同一图集的图片,放在不同的AB包结构下,会导致图集在不同的AB包中都存在。对内存和包体影响会比较大。

    3.3 其他遇见的问题

    1. shader的变体问题: 尽量减少变体,使用Shader Variants Collection进行控制,使用代码预加载Shader Variants Collection。 不要将Shader Variants Collection放到Graphics设置中,对AB处理没有作用。对Shader.Find方法有作用。
    2. 材质球尽量和预设放在一个AB包里面。 出现过不放在一起,变体没有生效的问题。
    3. AB包最好不要超过2M,协程加载时在一些机器上可能会出现卡顿。
    4. AB包中的shader要按资源加载的方式处理,不能使用Shader.Find()。
    5. 美术对sprite怎么生成图不理解,导致特效制作时容易出问题。
    6. 图片压缩格式不正确,会导致占用额外的内存。建议android尽量使用ETC格式
    7. 美术字体问题,美术字体使用的Texture,设置成sprite导致了在图集中也会存在。

    说明:以上观点仅是本人自己的观点,如有问题请联系我,我会及时更正。

    相关文章

      网友评论

        本文标题:Unity AB包资源排查

        本文链接:https://www.haomeiwen.com/subject/zocawhtx.html