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的获取加载方式