AssetBundle是什么
   
    AssetBundle简称AB包,可以理解为压缩包。里面包含了多个文件。
    
    不同的平台(ios 安卓 windows等等)有不同的资产压缩包。
    
    压缩包中包含模型贴图预制体音效材质球等等。(不能将C#代码打包进去,这也是热更新用lua来做的原因)
    
    这些文件可以分为两类:serialized file 和 resource files(序列化文件和源文件)。serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个);resource files:某些二进制资源(图片、声音)被单独保存,方便快速加载。
   
    
    
    AB包有什么作用
   
    
     相对Resources下的资源,AB包更好管理资源:
    
    
    Resources打包时就定死了,只读,无法修改,只能通过resources.load加载文件。
    
    AB包一般从网络上下载,也可以从本地自动打个包出去,存储位置可以自定义,压缩方式也可以自定义,后期可以动态更新。
   
    
     减小初始包大小
    
    
    AB包会压缩资源
    
    减少初始包大小:AB包一般是存在服务器上的,对玩家来说,可以下一个小的apk,然后再慢慢下载
   
    
     做热更新
    
    
    资源热更新和脚本热更新(更新lua脚本)
   
    热更新的基本规则:
    
    从客户端出发去看:客户端自带很少的默认资源和资源对比文件
    
    第一步:客户端获取资源服务器地址
    
    第二步:通过资源对比文件,检测哪些需要更新,哪些需要下载。然后更新/下载AB包
   
    
    
    生成AB包资源文件
   
    
     unity编辑器开发,自定义打包工具
    
    
    一些固定的代码,参考链接:
    
     AssetBundle资源打包(一)
    
    .
   
    
     官方打包工具Asset Bundle Browser
    
    
    这边介绍一下Asset Bundle Browser:
   
    package manager搜索并安装Asset Bundle Browser
    
    安装完即可看到多了个Packages文件夹
    
    
    
    点击window也可以找到Asset Bundles Browser窗口
    
    
    
    让项目中的资源和AB包关联:
    
    创建一个cube预制体,点击预制体,看右下角
    
    
    
     
   
    点击第一个None,新建一个包名,这里我起名为model
    
    再打开Asset Bundles Browser窗口看一下:
    
    
    
    看到窗口中有东西了,有名为model的包,model包中有一个cube,这样资源就可以打包了。另外C#代码是不可以打包的。
   
    
    
    
     点击build界面
    
    ,可以看到上面
    
     Build Target
    
    是选择你要打包的平台,展开可以看到XBOX,PS4,switch等等平台的选项。
    
    下面是选择保存路径
    
     Output Path
    
    。默认是给你存在项目目录的AssetBundles文件夹下。
    
    
     Clear Folders
    
    是否清空文件夹。
    
    
     copy to streamingAssets
    
    复制到streamingAssets下
   
    
     Advanced Settings下
    
    
    
     Compression
    
    选择压缩方式
    
    1.No Compression不压缩,快,包大
    
    2.LZMA压缩的文件最小,解压比较慢,用一个资源会将所有的都解压。
    
    3.LZ4比LZMA大一点点,用什么解压什么
   
    其他人的解释(来自网络):
    
    LZ4压缩:基于Block,资源分块,一个块一个小包,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。 注意使用LZ4压缩,可以获得可以跟不压缩想媲美的加载速度,而且比不压缩文件要小;
    
    LZMA压缩:基于Chunk的压缩,读取Header,找到Chunk,然后再找Block
    
    
    
    往下看:
    
    ETI 在资源包中包含资源类型信息
    
    FR 重新打包时需要构建包,不会删除不再存在的包
    
    ITTC 增量构建检查时,忽略类型数的更改
    
    AH 哈希值附在包名上
    
    SM 严格模式,打包报错的话打包直接失败
    
    DRB 运行时构建
   
    
     点build打包后
    
    
    根据链接可以找到包
    
    首先是AB包文件model:当时是给cube打到model中了
    
    然后是两个manifest文件:包含了AB包的文件信息,当加载时,提供了关键信息,资源信息,依赖关系,版本信息等。
    
    然后是一个和目录文件夹同名的文件:主包,记录AB包的依赖关系
    
     
   
    
    
    
     点击Inspect界面
    
    
    这是个检查页面,可以将之前打的包添加到此页面中,看看包中的资源
    
     
   
 
