我的环境
Unity引擎版本:Unity2019.3.7f1
AssetBundles-Browser 于2021-1-14拉取,github上最后提交日期是2019-12-14,在本文简称:ABBrowser
注意事项:每次修改spriteAtlas的属性后,都要把ab文件删除后再重新打包。
事件通知:只有不勾选Include In Build 才会触发 SpriteAtlasManager.atlasRequested
SpriteAtlas不勾选Include In Build
UI和图集不同名
用KSFramework中的例子分析,打开ABBrowser来看,如果图集的abName和ui的abName不一致,会提示你元素被打包到多个ab中,实际也是打包到不同的ab中了
UI和图集同名且引用公共图集
如果一个图片被多个ui界面的prefab中引用,不管这个图片是否有打到共用图集中,都会提示xxx is auto-included in multiple bundles
,但是通过解包ab可以看到login.ab并未包含btn_panel_02这张图,因为btn_panel_02打包在公共图集中
项目实践
最好的做法,就是一个atlas只被一个ui.prefab引用,且atlas和ui打到同一个ab中
这种做法需要自己加载图集,在UI编辑器中处理一套,而加载资源需要处理另一套
根据这个特性,我在 KSFramework 中已经对unity的spriteAtlas进行了管理
勾选Include In Build
如果图集和UI不在同一个ab中,则打包出来的版本会丢图,在Editor中中正常的。
而如果图集和UI放在同一个ab中,则不会丢图