unity对sprite 标记了 spritepackingTag, 在build 或者 开始游戏的时候, spritepacker 会将sprite打包为atlas图集。
unity assetbundle 中包含有 两种对象,sprite对象和 spriteatlas 对象。
如果直接调用 unity 5的 buildpipleline.buildassetbundles 中手动写入ab内容的方法, 填入每个 sprite对应的图片的 路径,会导致将 sprite 以及其 对应的 texture2d 纹理 都被打包进入 ab中,而 生成的 spriteatlas 图集不一定会打包进去, 因此 需要一个额外的中间对象,GameObject, 身上挂一个 带 List<Object> 成员的脚本,将sprite 填入到这个list成员中。
这样buildassetbundles 只build这个 gameobject , 会自动分析依赖,从而只将 图集打入其中,而不会将 sprite 对应的 texture2d 纹理 也打入其中。
在unity的 memory profiler 中可以看到内存中使用的 图片 是 单独sprite的纹理, 还是已经打好的图集 spriteatlas.