UH1L3——AB包依赖
UH1L3——AB包依赖
本章代码关键字
1 | AssetBundleManifest //主包的依赖文件 |
AB包依赖
当某个资源使用了另外一个 AB 包内的资源,则可以说该资源对那个AB包存在依赖
假设我们创建了一个红色材质球,让 modelAB 包中的 Cube 使用它,而不将这个材质球打包进 AB 包中
则下次进行 AB 包打包时,该材质球将被默认的打包到 modelAB 包内
而如果将这个红色材质球打入到其他 AB 包诸如 head 内,而只加载 model 包,在加载 Cube 将会导致 Cube 的材质丢失
因为 model 内并不存在 Cube 的材质
可见,一个资源身上用到了别的 AB 包中的资源
如果只加载这时自己的 AB 包,通过它创建对象,将会出现资源丢失的情况
这种时候需要把依赖包一起加载了才能正常
1 | //加载AB包 |
使用主包获取依赖信息
当一个游戏项目很大时,很难理清楚哪些 AB 包依赖着哪些包,因此很少会手动将某个资源所有的依赖包一起加载出来
这时我们需要利用 主包 获取依赖信息
首先将主包,也就是和存储 AB 包的目录名一样的包加载出来
然后将主包的 AssetBundleManifest
文件加载出来,AssetBundleManifest
文件的名字就是固定的 "AssetBundleManifest"
然后将调用 assetBundleManifest.GetAllDependencies
方法,传入包名,得到其所有的依赖的包名
通过这些包名加载即可加载所有的依赖包
1 | //加载主包 |
这种方案的缺点是:假设 包A 依赖 包B,包C,包D,而 资源a 只依赖 包B,即使只需要加载 资源a 仍然会把 包C 与 包D 加载出来
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!