[Unity]浅谈AssetBundle的依赖关系打包与加载

Posted WongSiuming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity]浅谈AssetBundle的依赖关系打包与加载相关的知识,希望对你有一定的参考价值。

.写在前面

  通过AssetBundle进行资源管理很方便.AssetBundle的打包与加载策略有很多种,本文来讲一种可以随意通过资源名来加载指定目录下资源的打包方法.意在加深对资源管理的理解.

 

.策略介绍

  1.打包的粒度划分的策略

    ①     所有在指定目录下的文件,即RootList,都被打包成单独结点

    ②     对于RootList所依赖的所有资源,即DepList,依赖数大于1的,被打包成单独结点,等于1的,向上合并至被依赖结点.

    ③     记录打包信息 

  2.下载策略

    ①     下载配置文件

    ②     更新AssetBundle文件 

  3.加载的策略

    ①     资源所对应的Hint不存在,报告不存在异常,若存在转下

    ②     Hint引用数增加,依赖的Hint引用数增加

    ③     若Hint内Bundle为空,加载Bundle,并加载依赖的Hint中未加载的Bundle

    ④     若Hint内MainAsset为空,加载MainAsset

    ⑤     返回Hint内MainAsset

  4.释放策略

    ①     资源所对应的Hint不存在,报告不存在异常,若存在转下

    ②     所有依赖的Hint引用数减1,对应的Hint引用数减1

    ③     若Hint为引用数为0时, 置空MainAsset,并对Bundle调用Unload(true)

 

.注意

       1.AssetBundle在加载自身内Asset时,需要保证所以来的资源都在此Bundle内或者在其它被加载上来的AssetBundle中才能保证加载完全正确.

       2.打包资源时可以要有过滤,将不打包的的类型或者指定资源滤出.

       3.可拓展:记录文件MD5变化,进行增量打包.

  4.本方式可以最大程度上减少AssetBundle的加载资源内存占用,但是会增加AssetBundle数量.

 

 四.源码

  MonsterABSystem

以上是关于[Unity]浅谈AssetBundle的依赖关系打包与加载的主要内容,如果未能解决你的问题,请参考以下文章

Unity 5.3 Assetbundle热更资源

Unity进阶----AssetBundle_03(2018/11/07)

Unity的资源加载以及AssetBundle的一些坑

再详细的介绍一下Unity5的AssetBundle

Unity AssetBundle共享资源打包/依赖资源打包

Unity AssetBundle(1):Assets打包和依赖(Dependencies)理解