本文探讨怎样配置一个AssetBundle更为合理。
对于结构为
的文件夹结构,当中shared是Hero文件夹下须要用到的公用资源。即公有依赖。可採用例如以下的打包策略
整个文件夹打包
将整个100001文件夹标记为一个包,打包完毕后它将依赖shared。
Assets:
- Assets/Characters/Hero/100001/Model/Materials/bianshi_w.mat
- Assets/Characters/Hero/100001/Model/Materials/bianshi_01.mat
- Assets/Characters/Hero/100001/Model/bianshi_01.jpg
- Assets/Characters/Hero/100001/Model/100001.FBX
- Assets/Characters/Hero/100001/100001.prefab
- Assets/Characters/Hero/100001/override.overrideController
- Assets/Characters/Hero/100001/Model/bianshi_w.JPG
Dependencies:
- AssetBundles/Android/shared
大小为120k,shared为4K
仅仅标记预设
将用到的预设标记为一个包。其它资源自己主动依赖。
Assets:
- Assets/Characters/Hero/100001/100001.prefab
Dependencies:
- AssetBundles/Android/shared
大小为117k。shared为4K
可见当包中文件多时,是会添加大小的。
我比照了加载文件,它们全然一致。我可以猜測多出来的字节数应该为文件标识。即为了可以依据不同的名字找到资源,须要承担存储标签的开销。
所以结论是:在无需区分文件时,尽量不要在Bundle中区分不同的文件。
DLC适配
假设须要为资源设置多种模型、材质、贴图匹配。就要更改Variant
的配置。所以就须要将资源单分成一个包,并为其指定变量类型。
结论
综上所述,打包的文件夹结构应该是为
- 预设文件单独指定包。
- 资源文件夹假设不需区分DLC则不用处理。
如需区分资源要整文件夹打包。并设置变量。然后在加载时更改
AssetBundleManager.ActiveVariants