前置约定 Sprite 被包含在Atlas中,并且当前预制体引用了该Sprite
1.Atlas未设置 AssetBundle
1.1Atlas设置了Include in Build
1.1.1 Sprite 未设置 AssetBundle
Prefab 的AssetBundle 将包含 Sprite实例,Atals实例和图集图片
1.1.2.Sprite 设置 AssetBundle
Prefab 的AssetBundle 只包含对 Srpite的引用
Sprite 的AsetBundle 将包含 Sprite实例,Atals实例和图集图片
1.2 Atlas未设置Include in Build
1.2.1 Sprite 未设置 AssetBundle
Prefab 的AssetBundle 将包含 Sprite 实例,不含 Atlas实例 和 图集图片
1.2.2 Sprite 设置了 AssetBundle
Prefab 的AssetBundle 只包含对 Sprite的引用
Sprite 的AssetBundle 只包含 Sprite实例 ,不含 Atlas实例 和 图集图片
2.Atlas 设置了 AssetBundle
2.1 Atlas设置了Include in Build
2.1.1 Sprite 未设置 AssetBundle
Prefab 的AssetBundle 将包含 Sprite实例
Atals的 AssetBundle 包含 Sprite实例 Atals实例 和图集图片
2.1.2.Sprite 设置 AssetBundle
Prefab 的AssetBundle 只包含对 Sprite的引用
Sprite 的AsetBundle 将包含 Sprite实例
Atals的 AssetBundle 包含 Atals实例 和图集图片
2.2 Atlas未设置Include in Build
1.2.1 Sprite 未设置 AssetBundle
Prefab 的AssetBundle 将包含 Sprite 实例
Atals的 AssetBundle 包含 Sprite实例 Atals实例 和图集图片
1.2.2 Sprite 设置了 AssetBundle
Prefab 的AssetBundle 只包含对 Sprite的引用
Sprite 的AsetBundle 将包含 Sprite实例
Atals的 AssetBundle 包含 Atals实例 和图集图片
综上所述,我们可以总结中Unity AssetBundle 的打包原则,
1.当被依赖的资源被设置了 AssetBundle时 ,总是只包含对改资源的引用
2.当被依赖资源没有被设置 AssetBundle时,则总是企图包含该资源的实例以及其依赖的资源,并向下递归
3.Atlas 的 Include in Build 只在 其未设置 AssetBundle时 起作用,其作用就是当打包管线发现对Atlas的引用时,是否允许将当前的 Atlas实例和图集图片打包进去。
以上三点就是AssetBundle 的打包原则了。