AssetBundle的如何加载

Assets:  apk/assets

StreamingAssets : 这个文件夹   在   手机平台  一般是只读的,不可写,安卓打包到上麦呢的文件夹

persisten:这个路径,可读可写,程序第一次加载的时候会把  streamingassets  文件夹下面的东西写入这里

AssetBundle的如何加载_第1张图片

流程:

1,先把打的包从硬盘load到内存,用www加载

      1.1assetbundle.unload(false)    只卸载内存文件

      1.2assetbundle.unload(true)     卸载内存文件和assetbundle.load出来的文件

2,解包,assetbundle.load解压缩包

     2.1Resources.unloadasset(obj)  这个api  释放

     2.2一些隐藏的文件(比如预设以来的材质和纹理)  就要用  Resources.unloadunusedasset()释放,

3,程序要使用  

      3.1  如果是图片 这样的资源  assetbundle.load 出来的object直接使用

             同2.1

      3.2如果是prefab,必须instantiate实例化一下,Destroy();

4 ,AssetBundle的依赖关系,在后缀是.manifest下

总的mainifest记录了所有的AssetBundle,每个都有各自的mainifest记录关系

AssetBundle的如何加载_第2张图片

加载的时候先加载依赖关系,后加载自身

卸载的时候先卸载自身,再卸载依赖


5,第一次load  obj A   用assetbundle.load

     第二次load  objA  把这些东西缓存起来,从缓存里取


总结:

1,从mainifest文件中获取assetbundle依赖关系,

     www  manifeset=new www(manifesetpath);

     manifeset.assetbundle.loadasset("AssetBundleManifeset");参数是固定的,整个程序只会走一次

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

     Name包名  ----》scenesone/load.ld

     主要为上层查找方便


3,根据依赖关系   加载资源

4,加载我们的assetbundle

     www   bundle=new www(bundlePath);

5,加载资源

     Assetbundle.Loadasset(resName);

    Assetbundle.loadassetwithsubassets(resname);加载多个资源

AssetBundle的如何加载_第3张图片


AssetBundle的如何加载_第4张图片


    

AssetBundle的如何加载_第5张图片

 1,加载资源

  第一步 :

 1,没有加载bundle    就执行 加载

      把你这个命令 存起来 等我加载完全了  在返回给你

  2,已经在加载 但是没有加载完全

      把你这个命令 存起来 等我加载完全了  在返回给你

  3, 已经加载并且完成

       就直接返回给上层


AssetBundle的如何加载_第6张图片




你可能感兴趣的:(AssetBundle)