下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

AseetBundle资源包

作者:匿名     来源: 游戏开发点击数:1400发布时间: 2021-10-19 17:37:16

标签: unity3dLZMA格式LZ4格式

  AseetBundle是一种你选择要导出的资源包,其中的内容被适当压缩,你可以在你的应用程序中正常使用。这也让开发者很容易地把模型贴图声音效果或者整个场景加载到流中,从而简化了下载过程,压缩类型如下:

  LZMA格式:

  打包生成的在默认情况下将被压缩,在U3D中,它的标准压缩格式是LZMA,因此在默认情况下,将包以该格式压缩,在使用之前需要先解压。  

 

  采用该格式压缩,其包体积最小,但解压缩所需时间相应增加。

  LZ4格式:

  在版本5.3的基础上增加了LZ4格式压缩,压缩后的包体体积更大,因为它的压缩比一般,然而,使用该格式的优点是解压缩时间相对较短。  

 

  要使用该格式压缩,只需打开软件就可以了。

  没有压缩:我们也可以不压缩,不需要压缩的程序包最大,但访问速度最快。使用非压缩策略,只需在打包时打开。

  2.关于项目的建议。

  它的压缩策略不只与包体的大小、解压速度有关,还与在运行时动态装载API的使用有关,所以为不同类型的资源指定了符合其使用特性的压缩策略。

  3.安装和卸载

  这一部分主要包括:

  l 新版本的API

  l 动力负载模式对比。

  l 为项目提供建议。

  3.1API新版本。

  对于5.x版本的新系统,旧的一些动态装载已被以下新所取代:

  l 4.x版中的方法是旧方法。

  l 在5.x版中变成了新方法。

  所以在这一部分之后的内容将使用新版本的API。

  3.2.动态负载对比。

  动态加载具有的资源首先要获得对象,第二步是从中加载目标资源。所以这一部分将重点讨论如何在运行时获取对象,下一部分将分析如何从中加载资源。

  对象在运行时的装入方式主要分为两种:

  l 首先获得对象,然后再通过获得对象。

  下一步,我们将具体分析这两种途径:

  l 首先获得对象,然后将对象通过装载。

  l 在以这种方式获得时,我们可以使用下面两个API来实现此功能。

  直接调用类的构造函数、目标所在的路径作为它的参数,构造对象的过程将加载文件,并返回一个对象,完成后,将在内存中创建较大的,因此后续的可以直接在内存中执行。

  类的一个静态方法,调用它时,Bundle文件将同时返回一个对象,与先前直接调用的构造函数不同的是,它将以解压形式将内容存储到磁盘中作为缓存,当完成此操作时,只需在内存中创建较小的,而随后的需要通过IO从磁盘中的缓存中获取。

  直接装入对象:对于4.x时代,我们可以通过方法来创建一个对象。但在5.x版本中,原来的两种方法都被新的方法所取代,而且机制也有些不同。

  从文件创建加载方法的新方法和4.x中的方法在机制上有一些不同,老的方法必须使用未压缩的文件来在运行时动态创建对象。另外,新的方法没有这种需求,它支持前一节中提到的几种压缩格式,对于压缩格式和未压缩磁盘上的包文件,这种方法可以直接加载,对于用默认的压缩格式压缩的包文件,该方法会在包文件在后台被解压之后加载,这样可以最快地加载。

  从内存获取二进制数据,以同步方式创建对象。这个方法通常用于加密的数据,经过加密的流数据通过后,我们可以调用这个方法来动态创建一个对象。

  上述就是在运行时动态装载对象的方法。下一步,小编将从载入期间的内存消耗的角度,对对象的几种载入方式进行对比。在资源具体信息中,勾选某个资源,就可以看到它在运行过程中的调用细节。对应上面的截图,我们可以进一步排查下这个AssetBundle加载是否需要那么多耗时。

    >>>>>>点击进入游戏开发专题

赞(8)
踩(0)
分享到:
上一篇:AssetBundle对象
华为认证网络工程师 HCIE直播课视频教程