AssetBundle入门笔记01

AB包的用处

  • AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;
  • AssetBundle自身保存着互相的依赖关系;
  • 压缩包可以使用 LZMA 和 LZ4 压缩算法,减少包大小,更快的进行网络传输;
  • 把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小

何为AB包

  • 它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file(序列化文件)resource files(源文件)。
    1.序列化文件:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个);
    2.源文件:某些二进制资源(图片、声音)被单独保存,方便快速加载。

  • 它是一个AssetBundle对象,我们可以通过代码从一个特定的压缩包加载出来的对象。这个对象包含了所有我们当初添加到这个压缩包里面的内容,我们可以通过这个对象加载出来使用。

简单的打包流程

  • 指定资源的AssetBundle属性(不区分大小写,一律转成小写)
    文件Inspector面板底部
  • 构建AssetBundle包
    1.在Editor文件夹中新建一个脚本如 BuildAB.cs
    2.输入如脚本:
using UnityEditor;
using System.IO;
public class BuildAB {//不需要继承
    [MenuItem("Assets/Build AssetBundles")] //显示在Unity的功能栏
    static void BuildAssetBundles()
    {
        string dir = "MY_AssetBundles";
        //判断文件夹是否为空
        if (Directory.Exists(dir)==false)        
        {
            Directory.CreateDirectory(dir);
        }
        //这个方法生成所有已被标记的ab包 
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, 
            BuildTarget.StandaloneWindows64);
    }
}

3.回到Unity中,点击打包:

4.打包成功
打包目录My_AssetBundle

依赖打包

  • 先打包两个使用了相同材质的物体,材质不打包!
    Cube
    Sphere

    共80kb
  • 把材质也打包
    共42kb

占的空间少了

参数说明:

  • BuildAssetBundleOptions
    1.BuildAssetBundleOptions.None:使用LZMA算法压缩,压缩的包更小,但是加载时间更长。使用之前需要整体解压。一旦被解压,这个包会使用LZ4重新压缩。使用资源的时候不需要整体解压。在下载的时候可以使用LZMA算法,一旦它被下载了之后,它会使用LZ4算法保存到本地上。
    2.BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,包大,加载快
    3.BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4压缩,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。

注意:使用LZ4压缩,可以获得可以跟不压缩想媲美的加载速度,而且比不压缩文件要小。

  • BuildTarget

    选择build出来的AB包要使用的平台,该AB包只能在该指定的平台使用。
    不压缩

    LZ4

    LZMA
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容