学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件

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文件夹
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第1张图片
点击window也可以找到Asset Bundles Browser窗口
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第2张图片
让项目中的资源和AB包关联:
创建一个cube预制体,点击预制体,看右下角
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第3张图片
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第4张图片

点击第一个None,新建一个包名,这里我起名为model
再打开Asset Bundles Browser窗口看一下:
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第5张图片
看到窗口中有东西了,有名为model的包,model包中有一个cube,这样资源就可以打包了。另外C#代码是不可以打包的。

学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第6张图片
点击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
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第7张图片
往下看:
ETI 在资源包中包含资源类型信息
FR 重新打包时需要构建包,不会删除不再存在的包
ITTC 增量构建检查时,忽略类型数的更改
AH 哈希值附在包名上
SM 严格模式,打包报错的话打包直接失败
DRB 运行时构建

点build打包后
根据链接可以找到包
首先是AB包文件model:当时是给cube打到model中了
然后是两个manifest文件:包含了AB包的文件信息,当加载时,提供了关键信息,资源信息,依赖关系,版本信息等。
然后是一个和目录文件夹同名的文件:主包,记录AB包的依赖关系
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第8张图片

学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第9张图片
点击Inspect界面
这是个检查页面,可以将之前打的包添加到此页面中,看看包中的资源
学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件_第10张图片

你可能感兴趣的:(Lua,C#&unity,游戏开发自学,游戏)