第一步:打AB包
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包完成打包