码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-02-10 09:14:35      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:manifest   服务器端   seda   路径   cat   load   game   byte   list   

两种压缩方式: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包的依赖关系与加载方式的深入

标签:manifest   服务器端   seda   路径   cat   load   game   byte   list   

原文地址:https://www.cnblogs.com/-831/p/12289815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!