unity普通资源打包

前言

unity资源,通常分为八类,即音效,特效,模型,shader,icon,字体,场景,ui.
音效、shader、icon、字体,打包策略比较简单,是直接标记ab的方式进行打包。
其他资源为了防止冗余,也为了减少包体大小等原因,中间进行拆解资源、归类后,对细小资源进行打包,加载时再逆向加载出去,打资源拼回来。本节先讲述简单资源的打包。

业务流程

  • 清空ab标记
  • 找到需要打包的文件及路径
  • 标记ab名及后缀(assetImporter)
  • 调用打包api,传入平台名,设置资源打包的输出位置等。
  • 根据需要,删除Manifest文件
  • 清空ab标记
  • 资源刷新

代码流程:

1、文件操作,查找到需要打包的文件,再进行ab标记

    static void SearchFileNeedBuild(string buildPath, List<string> suffix)
    {
   	//查找到需要打包的文件
        string[] filePaths = Directory.GetFiles(buildPath);
        for (int i = 0; i < filePaths.Length; i++)
        {
            if (filePaths[i] == buildPath) continue;
            string _filePath = filePaths[i];
            foreach (string suf in suffix)
            {
                if (_filePath.Contains(suf))
                {
                    if (!_filePath.Contains("meta"))
                    {
                        string fileName = Path.GetFileName(_filePath);
                        int idx = _filePath.IndexOf("Assets");
                        string impPath = _filePath.Substring(idx);
                        //ab标记
                        AssetImporter assetImporter = AssetImporter.GetAtPath(impPath);
                        assetImporter.assetBundleName = fileName;
                        Debug.Log("fileName");
                        assetImporter.assetBundleVariant = ABSUFFIX;
                    }
                }
            }
        }
    }

2、调用打包接口
调用打包接口后,unity会自动对已经标记的资源,在指定位置生成ab文件

    static void BuildBundle(string outputPath)
    {
        if (Directory.Exists(outputPath))
        {
            Directory.Delete(outputPath, true);
        }
        AssetDatabase.Refresh();
        Directory.CreateDirectory(outputPath);
        BuildPipeline.BuildAssetBundles(outputPath, BuildAssetBundleOptions.ChunkBasedCompression, EditorUserBuildSettings.activeBuildTarget);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值