引擎版本: 3.8.3
出现情况
打包之后, main目录把所有的图片资源都占了一份
项目结构
assets
|- abs // 普通目录, 里面全是ab包
|- doll // ab包目录, 里面全是prefab, 资源来自`res/image/UI/玩偶/xxx`
|- 1.prefab
|- 2.prefab
|- ...
|- ui // ab包目录, 里面全是prefab, 资源来自`res/image/UI/xxx(不含玩偶和_main)`
|- xxxUI.prefab
|- yyyUI.prefab
|- ...
|- res // 普通目录, 里面不含任何ab包, 理论上只会被引用的图片会被打包
|- image // 普通目录, 图片资源
|- icon // 普通目录, 别的分类
|- UI // 普通目录, UI分类, 基本上和美术输出目录一致
|- _main // 普通目录, 仅包含首场景资源
|- autoAtlas.pac // 自动合图: 目录范围为`res/image/UI/_main`
|- bg.png
|- btn_login.png
|- loadingbar.png
|- ... // 其他图片
|- 每日奖励
|- btn_reward.png
|- ... // 其他图片
|- 首页
|- bg_home.png
|- btn_startGame.png
|- ... // 其他图片
|- 玩偶 // 普通目录, 每个子目录都带一个`autoAtlas`
|- 1
|- autoAtlas.pac // 自动合图: 目录范围为`res/image/UI/玩偶/1`
|- bg.png
|- doll1.png
|- doll2.png
|- ... // 其他图片
|- 2
|- ... // 结构和玩偶1相似
|- 3
|- ... // 结构和玩偶1相似
|- ... // 若干个玩偶目录
|- autoAtlas.pac // 自动合图: 目录范围为`res/image`, 意为将剩余的图片合成图集
|- scene // 普通目录
|- main.scene // 唯一一个场景, 资源严格控制在`res/image/UI/_main`
|- script// 普通目录
|- ...
计划输出
这个结构, 本意就是让所有ui图打包在一个图集里面, 然后人工划分几个内部图集, 并且控制prefab的资源索引范围
输出应该如下, 根据若干个项目的经验, 也的确如此, 效果可控有效
(以微信小游戏为示例):
assets
|- doll
|- import
|- native // 有若干张合图, 来自`res/image/UI/玩偶/{X}/autoAtlas.pac`
|- xx/xxxxx.png
|- xx/xxxxx.png
|- xx/xxxxx.png
|- main
|- import
|- native
|- xx/xxxxx.png // 只有1张小合图, 来自`res/image/UI/_main/autoAtlas.pac`
|- ui
|- import
|- native
|- xx/xxxxx.png // 只有1张大合图, 来自`res/image/autoAtlas.pac`
实际输出
其中某个项目, 因为要做出海, 所以拷贝了一份, 从3.8.4转到3.8.3, 也加了多语言等修改, 主要输出其实是安卓和ios, 但是这个项目出现了莫名的问题, 就算打包web和微信小游戏也依旧有这个情况
assets
|- doll // 和计划输出无异
|- import
|- native
|- xx/xxxxx.png
|- xx/xxxxx.png
|- xx/xxxxx.png
|- main // [!!] 这里出问题了
|- import
|- native
|- xx/xxxxx.png // 这里把整个项目的图片, 都打包成合图了
|- xx/xxxxx.png // 变成了非常多张图片
|- xx/xxxxx.png // 而且合图也没有按照autoAtlas的范围
|- xx/xxxxx.png // 比如doll的散图和UI的散图, 都混合在一起
|- ui // 和计划输出无异
|- import
|- native
|- xx/xxxxx.png
排查
排查了很久, 资源引用也没有出错
实在不行, 我尝试把main里面多余的图集, 改成纯白色的图, 以减少包体体积
结果却惊现, 游戏里大部分的ui都变成白色方块了
可见main里面的图, 才是游戏里的真实引用
原来ab包的图, 应该是因为优先级一样, 才拷贝了一份
目前没有排查到任何原因, 只好到论坛问问
不知道有没有类似经验的小伙伴能交流一下

