AssetBundle加载资源一:自动打包bundle包并写到json

简单介绍:一个简单的assetbundle自动标记打包,并把bundle的名字与其中的资源对应写到json文件中,方便后面加载资源

注意Unity的Asset文件夹下要有对应的层级目录,Resources文件夹下要有对应名字的json文件
在这里插入图片描述

bundle打包脚本(放到Editor文件夹下)
BuildAssetBundle.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;

namespace FWork
{
   
    public class BuildAssetBundle 
    {
   
        public static KeyValueInfo keyValueList = null;//存储设置label的ab配置数据
        /// <summary>
        /// 打包生成所有AssetBundles
        /// </summary>
        [MenuItem("AssetBundleTools/BuildAllAssetBundles")]
        public static void BuildAllAB()
        {
   
            //(打包)AB的输出路径
            string strABOutPathDIR = "";
            BuildTarget buildTarget = BuildTarget.NoTarget;
            buildTarget = GetActiveBuildTarget();
            strABOutPathDIR = PathManger.GetABOutFile();
            if (!Directory.Exists(strABOutPathDIR))
            {
   
                Directory.CreateDirectory(strABOutPathDIR);
            }
            
            //打包生成
            BuildPipeline.BuildAssetBundles(strABOutPathDIR, BuildAssetBundleOptions.ChunkBasedCompression, buildTarget);
            AssetDatabase.Refresh();
            Debug.Log("AB资源打包完成-文件路径:" + strABOutPathDIR);
        }

        /// <summary>
        ///  删除AssetBundle包文件
        /// </summary>
        [MenuItem("AssetBundleTools/DeleteAllAssetBundles")]
        public static void DeleteAllABs()
        {
   
            //(打包)AB的输出路径
            string strNeedDeleteDIR = "";

            strNeedDeleteDIR = PathManger.GetABOutFile();
            if (!string.IsNullOrEmpty(strNeedDeleteDIR))
            {
   
                try
                {
   
                    //参数true 表示可以删除非空目录。
                    Directory.Delete(strNeedDeleteDIR, true);
                    //去除删除警告
                    File.Delete(strNeedDeleteDIR + ".meta");
                    //刷新
                    AssetDatabase.Refresh();
                    Debug.Log("资源删除完成!");
                }
                catch (System.Exception)
                {
   
                    Debug.Log(strNeedDeleteDIR+"文件夹不存在");
                }             
            }          
        }


        /// <summary>
        /// (自动)给资源文件(预设)添加标记
        /// </summary>
        [MenuItem("AssetBundleTools/Set AB Label")]
        public static void SetABLabels()
        {
   
            keyValueList = new KeyValueInfo();
            keyValueList.KeyValueList.Clear();
            //需要给AB做标记的根目录
            string strNeedSetABLableRootDIR = "";
            //目录信息
            DirectoryInfo[] 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在上一篇文章中我们介绍了如何使用Shell脚本实现iOS批量自动打包的功能,本篇文章将进一步扩展这个功能,实现自动修改名的功能。 在iOS开发中,为了方便管理和区分不同版本,我们通常会为每个版本设置不同的名。但是,在打包的过程中,手动修改名是一件非常繁琐和容易出错的事情。因此,我们可以通过自动化的方式来实现自动修改名的功能,从而提高开发效率。 具体实现方法如下: 1. 在打包的脚本中添加修改名的功能。 在上一篇文章中,我们已经编了一个自动打包的脚本,这里我们需要在这个脚本中添加修改名的功能。具体代码如下: ``` #!/bin/bash # 待打包的项目路径 PROJECT_PATH="/Users/xxx/Documents/xxx" # 打包输出路径 OUTPUT_PATH="/Users/xxx/Desktop/ipa" # 工程名 PROJECT_NAME="xxx" # 打包配置名 CONFIGURATION="Release" # 修改名 NEW_BUNDLE_ID="com.xxx.v${VERSION}" # 获取项目版本号 VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_PATH}/${PROJECT_NAME}/Info.plist") # 修改Bundle ID /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${NEW_BUNDLE_ID}" "${PROJECT_PATH}/${PROJECT_NAME}/Info.plist" # 打包 xcodebuild -workspace "${PROJECT_PATH}/${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -configuration "${CONFIGURATION}" -archivePath "${OUTPUT_PATH}/${PROJECT_NAME}.xcarchive" archive # 导出IPA xcodebuild -exportArchive -archivePath "${OUTPUT_PATH}/${PROJECT_NAME}.xcarchive" -exportOptionsPlist "${PROJECT_PATH}/ExportOptions.plist" -exportPath "${OUTPUT_PATH}/${PROJECT_NAME}_v${VERSION}.ipa" ``` 2. 在脚本中添加获取版本号的功能。 在修改名的时候,我们需要获取项目的版本号,因此,我们需要在脚本中添加获取版本号的功能。具体代码如下: ``` # 获取项目版本号 VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_PATH}/${PROJECT_NAME}/Info.plist") ``` 3. 在脚本中添加修改Bundle ID的功能。 在获取版本号之后,我们需要根据版本号来修改名。具体代码如下: ``` # 修改名 NEW_BUNDLE_ID="com.xxx.v${VERSION}" /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier ${NEW_BUNDLE_ID}" "${PROJECT_PATH}/${PROJECT_NAME}/Info.plist" ``` 这里我们将名修改为“com.xxx.v版本号”,其中“版本号”是从Info.plist文件中获取的。 4. 运行脚本进行自动打包和修改名。 完成以上步骤之后,我们就可以在终端中运行脚本,实现自动打包和修改名的功能了。运行命令如下: ``` sh auto_build.sh ``` 需要注意的是,修改完名之后,我们需要重新打包一次才能生成修改后的IPA文件。 这样,我们就实现了iOS批量自动打包和部署的功能,并且在此基础上实现了自动修改名的功能。通过自动化的方式,可以大大提高开发效率,减少手动操作的繁琐和出错。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值