Unity打包AB资源(傻瓜式)

/// <summary>
    /// 简易的ab打包方法
    /// </summary>
    /// <param name="PathFolder:要进行打包的目录,这里传入的PathFolder格式为Assets/aaa/bbb/"></param>
    /// <param name="assetBundleFileName:给导出的资源包的名字"></param>
    /// 
    public static void BuildBundle(string PathFolder,string assetBundleFileName)
    {
        //获取文件夹内所有文件
        DirectoryInfo dir = new DirectoryInfo(PathFolder);
        FileInfo[] info = dir.GetFiles();
        
        //声明一个哈希,为了是剔除多余的.meta文件,这里我打的是txt文件
        HashSet<string> luaFormat = new HashSet<string>();
        luaFormat.Add("txt");
        //声明list,用来存放每个需要打包文件的地址
        List<string> lst = new List<string>();
        foreach (FileInfo fileInfo in info)
        {
            string[] s = fileInfo.Name.Split('.');
            //剃出meta文件,并把每个需要打包文件的地址存入字典
            if (luaFormat.Contains(s.Last()))
                lst.Add(PathFolder + fileInfo.Name);
        }
        //这里看你要打几个资源包,我要每个文件夹打一个,所以[1]就够了
        //AssetBundleBuild这个结构体里面有三个参数
        //assetBundleName 需要导出的资源包的名字
        //assetBundleVariant AB的变体文件,一般用于lod模型,不用的话可以不赋值
        //assetNames 需要打包的所有文件地址,需要数组格式,所以我进行了转换
        AssetBundleBuild[] buildBundle = new AssetBundleBuild[1];
        buildBundle[0].assetBundleName = assetBundleFileName + ".assetbundle";
        string[] arr = new string[lst.Count];
        for (int i = 0; i < lst.Count; i++)
        {
            arr[i] = lst[i];
        }
        buildBundle[0].assetNames = arr;
        //根据不同的环境进行ab打包,传参如下
        //BuildPipeline.BuildAssetBundles(需要导出的目录, buildBundle, BuildAssetBundleOptions.None(一般为none,没有深究), 打包环境);
        //传参的时候要注意,不管是导出的目录还是需要打包的文件地址,全部是以Assst开头的相对路径,不需要Application.dataPath等路径,否则会返回null,打包失败
#if UNITY_IPHONE
            BuildPipeline.BuildAssetBundles(getBundleFolder(), buildBundle, BuildAssetBundleOptions.None, BuildTarget.iOS);
#elif UNITY_ANDROID
            BuildPipeline.BuildAssetBundles(getBundleFolder(), buildBundle, BuildAssetBundleOptions.None, BuildTarget.Android);  
#else
        BuildPipeline.BuildAssetBundles("Assets/StreamingAssets/config/Bundle/Lua", buildBundle, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
#endif
    }

新手第一次记录,代码纯手敲没有经过运行,有bug的话@我

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值