Unity AB包学习笔记
Unity AB包学习笔记
前言
这个笔记是我看b站教程所记录下来的笔记。大家可以去b站看一下这个教程: b站教程 。
了解什么是AB包
AB包就是特定于平台的资产压缩包,有点类似压缩文件。这些资产包括∶模型、贴图、预设体、音效、材质球等等。但是它不支持将代码一并打包。
AB包的作用
生成AB包资源文件
PS:我使用的Unity版本为2019.4.40f1,并且我在项目中已经安装好了Asset Bundle Browser1.7.0。
生成AB包资源文件有两种方法(视频里面只说了两种):我们使用Unity编译器开发自定义打包工具(公司比较大或者是公司比较老就可能有这样的方法)和我们使用Unity官方提供的打包工具Asset Bundle Browser来进行打包。
在开始前,我们首先要让资源和AB包关联。首先我们选中任意一个预制体,然后在Inspector窗口下选中AssetBundle选项并且new一个名字。如下图:
这是用来表明这个预制体会打包到model这个包中。
此时大家可以点击Windows→AssetBundle Browser来查看当前项目中AB包的信息。大家可以在它的Configure页签下看到一个model的选项,再次点击这个选项就可以看到我们之前设置的模型了。
另一个页签Build就是我们用来打包的。Build Target是用来指定我们要打包到哪里的平台。Output Path是我们打包成功后输出的路径。Clear Folders表示是否要请空Output Path路径下的文件夹。Copy to StreamingAssets表示我们是否要将其复制到StreamingAssets文件夹中。Advanced Setting下Comperssion是压缩类型,LZMA压缩的大小最小但是每次加载要将全部的资源都解压出来,LZ4压缩的大小较大但是我们可以要一个资源解压一个。Exclude Type Information在资源包中不包含资源的类型信息。Force Rebuild重新打包时需要重新构建包,但是它和ClearFolders不同,它不会删除不再存在的包。lgnore Type Tree Changes增量构建检查时,忽略类型数的更改。Append Hash 将文件哈希值附加到资源包名上。Strict Mode严格模式,如果打包时报错了,则打包直接失败无法成功。Dry Run Build运行时构建。我们设置完后点击Build按钮就可以进行打包。
打包出来后,大家可以看到一个主包和你设定的AB包的配置信息和资源(配置信息是文件后缀名为.manifest,资源是那些没有后缀名的二进制文件)。主包名和你设定文件名称相同。manifest包含了AB包的文件信息。当我们加载的时候它提供了关键信息:资源信息、依赖关系和版本信息等。
最后一个页签Inspector是用来看包的信息。
使用代码加载AB包文件
同步和异步加载AB包
1 |
using System.Collections; |
因为我们之前设定文件在项目打包后是不能打进包中的,所以我们才用streamingAssets文件存储。实际在项目中,AB包资源会存放在服务器中然后我们从服务器中下载。
我们不能重复加载AB包比如下面的这段代码就会报错:The AssetBundle ‘StreamingAssets\model’ can’t be loaded because another AssetBundle with the same files is already loaded.
1 |
using System.Collections; |
异步加载代码:
1 |
using System.Collections; |
我们可以调用AssetBundle.UnloadAllAssetBundles来卸载全部加载过的AB包。但是如果我们只想卸载个别的AB包,那么可以按照下面的代码执行:
1 |
```csharp |
1 |
更多关于AssetBundle的API大家可以查看官网的介绍:[AssetBundle - Unity 脚本 API](https://docs.unity3d.com/cn/2019.4/ScriptReference/AssetBundle.html)。 |
AB包管理器
1 |
using System.Collections; |
具体的AB包管理器代码如下:
1 |
using Common; |