unity打AB包,AssetBundle预制体与图集(一)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值