1、先创建一个AB包的按钮,如图
新建一个脚本
public class BulidBundle : Editor
{
[MenuItem("TOOL/BuildBundle")]
public static void BuildAndroidBundle()
{
}
}
public static void BuildAndroidBundle()
{
// 设置AssetBundle的输出目录
string saveDir = "Assets/StreamingAssets/AB";
// 如果目录存在,先删除
if (Directory.Exists(saveDir))
{
Directory.Delete(saveDir,true);
}
// 创建目录
Directory.CreateDirectory(saveDir);
}
如下图,没有就自己新建吧
创建AB包,加上完整代码
public class BulidBundle : Editor
{
[MenuItem("TOOL/BuildBundle")]
public static void BuildAndroidBundle()
{
// 设置AssetBundle的输出目录
string saveDir = "Assets/StreamingAssets/AB";
// 如果目录存在,先删除
if (Directory.Exists(saveDir))
{
Directory.Delete(saveDir,true);
}
// 创建目录
Directory.CreateDirectory(saveDir);
//这个是一个结构体,包含以下元素
//assetBundleName: AssetBundle 的名称。
//assetNames: 包含在 AssetBundle 中的所有资源的路径数组。
AssetBundleBuild[] buildMap = new AssetBundleBuild[2];
buildMap[0] = new AssetBundleBuild();
buildMap[0].assetBundleName = "Prefab_UI";
buildMap[0].assetNames = new string[]{"Assets/Prefabs/Prefab_One.prefab","Assets/Prefabs/Prefab_Two.prefab"};
buildMap[1] = new AssetBundleBuild();
buildMap[1].assetBundleName = "Prefab_Altlas";
buildMap[1].assetNames = new string[]{"Assets/Atlas/Atlas_One.spriteatlas"};
BuildAssetBundleOptions options = BuildAssetBundleOptions.ChunkBasedCompression |
BuildAssetBundleOptions.DeterministicAssetBundle;
// ChunkBasedCompression: 启用基于块的压缩。这允许 AssetBundle 在加载时按块进行解压缩,而不是一次性解压缩整个包。这有助于减少内存使用,并改善加载性能。
// DeterministicAssetBundle: 使 AssetBundle 构建过程具有确定性。这意味着相同的输入将始终产生相同的输出。这对于版本控制和确保构建的一致性很有用。
BuildPipeline.BuildAssetBundles(saveDir, buildMap, options, BuildTarget.Android);
// 刷新资源,确保新创建的Asset Bundles 能够在Editor中即时显示
AssetDatabase.Refresh();
}
}
buildMap[0].assetNames 这个是所有要打包的资源的名称,看下图
如果是一个那就写一个 buildMap[1].assetNames = new string[]{“Assets/Atlas/Atlas_One.spriteatlas”};
如图
点击
至此,AB包完成打包