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


    第一步:打AB包

    1、先创建一个AB包的按钮,如图
    在这里插入图片描述
    新建一个脚本
    在这里插入图片描述

    public class BulidBundle : Editor
    {
        [MenuItem("TOOL/BuildBundle")]
        public static void BuildAndroidBundle()
        {
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建目录

     public static void BuildAndroidBundle()
        {
            // 设置AssetBundle的输出目录
            string saveDir = "Assets/StreamingAssets/AB";
            
            // 如果目录存在,先删除
            if (Directory.Exists(saveDir))
            {
                Directory.Delete(saveDir,true);
            }
    
            // 创建目录
            Directory.CreateDirectory(saveDir);
      	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    如下图,没有就自己新建吧
    在这里插入图片描述
    创建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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    buildMap[0].assetNames 这个是所有要打包的资源的名称,看下图
    在这里插入图片描述
    如果是一个那就写一个 buildMap[1].assetNames = new string[]{“Assets/Atlas/Atlas_One.spriteatlas”};
    如图
    在这里插入图片描述
    点击

    在这里插入图片描述
    在这里插入图片描述

    至此,AB包完成打包

  • 相关阅读:
    【数学建模】熵权法 Python代码
    php+mysql实现补齐24小时时间段同时赋值0的后端解决方案
    Vue2 08 了解Vue-cli和Webpack
    解密第三方登录-微信扫码登录 Java生成二维码
    Coursera自动驾驶1.1-1.2——自动驾驶基础和软硬件架构
    uniapp如何实现关闭前面指定数目页面
    HarmonyOS开发:【基于命令行(开发环境)】
    Django实战项目-学习任务系统-自定义URL拦截器
    基于鲸鱼算法的无人机航迹规划-附代码
    odps函数
  • 原文地址:https://blog.csdn.net/qq_42489774/article/details/134243664