Assetbundle包的依赖关系与加载方式的深入

Posted -831

tags:

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

两种压缩方式:Lzma (默认的), Lz4

四种加载方法:

1,从内存中加载:LoadfromMemory()内存

2,从本地加载:LoadFromFile

3,从本地或服务器加载www(下面会提到)

4,从服务器端加载unityWebRequest

加载依赖资源包

1,获得总的依赖配置(streamingAssets)

2,根据名称找到目标加载资源的所有依赖

3,加载所有的依赖资源

加Lua脚本Lua格式改为bytes后缀文件

资源路径:

Application.datapath;

Application.streamingAssetsPath(只读不可写)

Application.persistentDataPats(特殊 可读可写 运行时!)

Application.temporarycachePath

1,Windows.manifest(总的配置文件)

依赖关系:一个东西要完整的显示出来,必须要另外一个东西。

2,单个Assetbundle包配置文件:里面记录的是

(1)单个Assetbundle里面的资源

(2)记录单个Asssetbundle的依赖关系

bundle包的依赖关系加载:

技术图片

 

 (哈哈哈 机智如我 上图是举例 )

第一个的:

加载A需要做些什么事情那?

1,加载B和C

2,加载A

卸载A?

1,先卸载B,C依赖关系

2,判断B,C是否有依赖 B,C卸载

第二个:

加载A?

1,判断依赖关系A判断B,C  |B,C判断D

卸载B?

1,只能卸载B,D关系

卸载C?

1,卸载C,D关系

2,卸载D

插个小话题

引用计数:

Gc机制也是存在引用计数的关系: 被谁引用(List<>) 引用的谁(List<>)

下面是bundle包三块内存存放与加载方式

技术图片

 

 1,bundle包放在网络用WWW加载然后加载到本地,bundle包在本地用Assetbundle.LoadFromFile方法加载(内存镜像)

释放内存:Assetbundle.Unload(false)

2,解压Assetbundle:Assetbundle.Load()将镜像里的zip包解压出来

释放内存:Resource.Unloadasset(obj)只能卸载obj类型 shader 网格 材质 贴图都不能卸载 而Resource.Unloadunusedasset()用这个API释放 shader 网格 材质 贴图

3,GameObjece.instance使用解压出来的资释

释放内存:Destroy()

 

以上是关于Assetbundle包的依赖关系与加载方式的深入的主要内容,如果未能解决你的问题,请参考以下文章

UnityAssetBundle和AssetBundle Manager的使用和介绍(流程和依赖关系)

UnityAssetBundle和AssetBundle Manager的使用和介绍(流程和依赖关系)

AssetBundle八:AssetBundle的获取加载方式

AssetBundle八:AssetBundle的获取加载方式

unity打包AssetBundle包的几种压缩方式介绍

AssetBundle资源打包与加载