SpriteAtlas Include in Build 的理解
我们查看官方资料,可以看到“Include in Build”的解释为:
按字面理解,是打包时图集是否被包含到资源中。Unity2018.4.6之前是有Bug,如果有AB包,AB包中也引用了图集的资源,会有两份同样的资源,造成冗余,这个Bug在2018.4.6被修复了。
在编辑器状态下,如果勾选了“Include in Build”,相当于系统直接使用图集文件,经测试发现:
- 不选中InClude in Build
在root\Library\AtlasCache\xx\不会生成在大图集缓存aa,当第一次加载的AssetBundle包里含有图集资源时,会触发SpriteAtlasManager.atlasRequested,此时需要手动处理触发回调函数里收到资源名后自行加载图集目录资源(打包后的资源目录)
- 选中InClude in Build
在root\Library\AtlasCache\xx\会生成在大图集缓存,每次加载的AssetBundle包里含有图集资源时,会先从原始图集资源目录里获取资源,之后如下判断:
-
如果存在且获取正确则生成大图集缓存资源aa在root\Library\AtlasCache\xx\目录下;
-
如果原始图集资源目录获取不到正确资源,则会触发SpriteAtlasManager.atlasRequested,此时需要手动处理触发回调函数里收到资源名后自行加载图集目录资源(打包后的资源目录),且不会生成大图集缓存资源。
当在编辑器状态下勾选,图集中的元素被改变时,在运行时图集会自动重新打包,打包完成加载到缓存中,我们在编辑窗口和运行窗口看到的图片元素都是最新的。
如果编辑器状态下不勾选,则需要代码动态加载SpriteAtlasManager.atlasRequested,一般来说我们动态加载的文件是AB包,当我们图片原文件修改时,图集的AB包还未更新,则出现编辑窗口是新的图片,运行窗口还加载老的AB包,显示的是老图。
建议在开发环境下勾选图集中的“Include in Build”,在打包时,不勾选。
注意AB包,在切换勾选后,需要重新生成。