unity 《专题系列》资源打包 Asset Bundles
第二节 Asset Bundles 构建
一、AssetBundle构建时使用的关键API
参数简单解释:
1)string outputPath :打包到哪个路径;
2)BuildAssetBundleOptions assetBundleOptions:构建方式选择 ,主要有三个选项可选择
a)BuildAssetBundleOptions.None:使用LZMA算法压缩,压缩的包更小,但是加载时间更长。使用之前需要整体解压。一旦被解压,这个包会使用
LZ4重新压缩。使用资源的时候不需要整体解压。在下载的时候可以使用LZMA算法,一旦它被下载了之后,它会使用LZ4算法保存到本地上。
b)BuildAssetBundleOptions.UncompressedAssetBundle:不压缩,包大,加载快
c)BuildAssetBundleOptions.ChunkBasedCompression:使用LZ4压缩,压缩率没有LZMA高,但是我们可以加载指定资源而不用解压全部。
注意使用LZ4压缩,可以获得可以跟不压缩想媲美的加载速度,而且比不压缩文件要小。
3)BuildTarget targetPlatform:构建在哪里使用的目标平台(包括:iOS,Android,PC等)
二、Asset Bundles 构建步骤
1)打开Unity2017,随便构建个GameObject,并给他添加材质,如下图
2)然后把建好的GameObject,作为预制体保存(原来的可以删掉),如下图
3)给预制件,AssetBundle 命名,取后缀,操作如下图
4)新建文件夹和C#脚本(注意:改脚本一定要放在新建的Editor文件夹下,不然后面会有影响),如下图
5)C# 脚本代码,如下图
using UnityEditor;
using System.IO;
public class CreateAssetBundles {
//在Unity菜单栏中“Assets”下拉菜单中添加“Build AssetBundles”
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string assetBundleDirectory = "Assets/AssetBundles";
if (!Directory.Exists(assetBundleDirectory)) {
//如果目录中没有“AssetBundles”文件夹,就新建该文件夹
Directory.CreateDirectory(assetBundleDirectory);
}
//在 “Assets/AssetBundles”目录下构建到目标平台为StandaloneWindows64的AB包
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
6)保存脚本,回到 Unity ,你可以构建你的第一个 AssetBundle 包,如下图
7)构建完,会出现构建生成的文件夹及文件,如下图
8)在工程文件夹下你也会找到这些文件,AssetBundle 基本构建完毕,很简单吧,如下图
参考资料: