Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

目录


一、简单介绍

Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。

ExportUnityPackage 快捷键,一键命名包名并导出UnityPackage资源,在版本管理的时候或许会有些用。

二、实现方法

1、GenerateUnityPackageName() 函数生成预置的包名;

2、AssetDatabase.ExportPackage() 打包指定的资源;

3、Application.OpenURL() 打开指定路径文件夹查看资源导出;

4、注意事项:根据自己需要设置包名和资源路径;

三、效果预览

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

四、实现步骤

1、打开Unity,新建一个工程,如下图

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

2、在工程中新建脚本,ExportUnityPackage 一键导出资源,如下图

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

3、点击菜单栏或者快捷键 Ctrl + E 一键打包导出成 UnityPackage 资源,如下图

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

4、导出如下图

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

5、打包 UnityPackage 资源包的内容,如下图

www.zeeklog.com  - Unity 工具类 之 简单一键 UnityPackage 导出 ExportUnityPackage 实现

五、关键代码

using System;
using System.IO;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;

/// <summary>
/// 快速导出UnityPackage包名
/// Ctrl + e 快速导出
/// </summary>
public partial class ExportUnityPackage
{
#if UNITY_EDITOR
    [MenuItem("Tool/导出 UnityPackage %e", false, 1)]
    private static void MenuClicked()
    {
        // 获取包名
        var generatePackageName = ExportUnityPackage.GenerateUnityPackageName();

        // 生成 UnityPackage 资源
        ExportPackage("Assets/ExportUnityPackage", generatePackageName + ".unitypackage");

        // 打开生成 UnityPackage 资源的路径查看
        OpenInFolder(Path.Combine(Application.dataPath, "../"));
    }
#endif

    /// <summary>
    /// 获取包名
    /// </summary>
    /// <returns>返回指定的包名</returns>
    public static string GenerateUnityPackageName()
    {
        return "ExportUnityPackage_" + DateTime.Now.ToString("yyyyMMdd_hh");
    }

    /// <summary>
    /// 打开指定文件夹
    /// </summary>
    /// <param name="folderPath">文件夹路径</param>
    public static void OpenInFolder(string folderPath)
    {
        Application.OpenURL("file:///" + folderPath);
    }

    /// <summary>
    /// 导出资源
    /// </summary>
    /// <param name="assetPathName">资源路径</param>
    /// <param name="fileName">资源包名</param>
    public static void ExportPackage(string assetPathName, string fileName)
    {
        AssetDatabase.ExportPackage(assetPathName, fileName, ExportPackageOptions.Recurse);
    }
}