资源依赖复制工具

 效果

 

复制代码
using System.IO;
using UnityEditor;
using UnityEngine;

public static class AssetDepsTool
{

    private const string Default_Copy_Folder = "D:/UnityAssets";

    [MenuItem("Assets/MyTools/AssetDeps/Copy到默认目录", false, 99)]
    static void CopyToDesktop()
    {
        if (null == Selection.activeObject) return;
        var resPath = AssetDatabase.GetAssetPath(Selection.activeObject);
        if (string.IsNullOrEmpty(resPath)) return;
        if (!File.Exists(resPath))
            return;

        Debug.Log("========== begin");
        CopyFile(resPath, Default_Copy_Folder);
        Debug.Log("==========");
    }

    [MenuItem("Assets/MyTools/AssetDeps/打印依赖", false, 99)]
    static void PrintAssetDeps()
    {
        if (null == Selection.activeObject) return;
        var resPath = AssetDatabase.GetAssetPath(Selection.activeObject);
        if (string.IsNullOrEmpty(resPath)) return;

        var deps = AssetDatabase.GetDependencies(resPath, true);
        Debug.Log("========== begin");
        for (var i = 0; i < deps.Length; ++i)
        {
            Debug.Log(deps[i]);
        }
        Debug.Log("==========");
    }

    [MenuItem("Assets/MyTools/AssetDeps/打印并copy依赖", false, 99)]
    static void PrintAndCopyAssetDeps()
    {
        if (null == Selection.activeObject) return;
        var resPath = AssetDatabase.GetAssetPath(Selection.activeObject);
        if (string.IsNullOrEmpty(resPath)) return;

        var deps = AssetDatabase.GetDependencies(resPath, true);
        Debug.Log("========== begin");
        for (var i = 0; i < deps.Length; ++i)
        {
            Debug.Log(deps[i]);
            CopyFile(deps[i], Default_Copy_Folder);
            Debug.Log($"=====");
        }
        Debug.Log("==========");
    }

    static void CopyFile(string filePath, string folder)
    {
        var dstFileFullPath = $"{folder}{filePath}";
        if (!File.Exists(dstFileFullPath))
        {
            var fileFolderFullPath = Path.GetDirectoryName(dstFileFullPath);
            if (!Directory.Exists(fileFolderFullPath))
                Directory.CreateDirectory(fileFolderFullPath);
            File.Copy(filePath, dstFileFullPath);
            Debug.Log($"copy ->: {fileFolderFullPath}");
        }

        var srcFileMetaPath = $"{filePath}.meta";
        var dstFileMetaFullPath = $"{dstFileFullPath}.meta";
        if (!File.Exists(dstFileMetaFullPath))
        {
            File.Copy(srcFileMetaPath, dstFileMetaFullPath);
            Debug.Log($"copy meta");
        }
    }

}
复制代码

 

posted @   yanghui01  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示