AssetBundle是什么
AssetBundle是Unity引擎提供的一种资源管理技术,可以用来动态的加载卸载资源,减少运行时内存压力,所以也是一种热更新技术。它是一种特定的压缩包,它可以包含模型,材质,预设包,音频,甚至整个场景。
构建AssetBundle
创建一个名为Editor的文件夹,新建一个C#脚本BuildAssetBundle
using UnityEngine;
using UnityEditor;
using System.IO;
public class BuildAssetBundle {
[MenuItem("AssetBundleTools/BuildAllAssetBundles")]
public static void buildAllAssetBundle()
{
string outPath = string.Empty;
outPath = Application.streamingAssetsPath;
if(!Directory.Exists(outPath))
{
Directory.CreateDirectory(outPath);
}
BuildPipeline.BuildAssetBundles(outPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}
该脚本会创建一个名为“AssetBundleTools”的菜单项,点击里面的“BuildAllAssetBundles”会执行这段代码。
这里会自动创建一个StreamingAssets文件夹,这是我们要打包的输出路径,StreamingAssets是一个特殊文件夹,放在这里的资源在打包成apk或ipa是不会被压缩的,当然你也可以打包进AssetBundles文件夹。
AssetBundle的压缩方式:
在这之前先说一下LZMA和LZ4这两种压缩方式: