资源依赖复制工具

 效果

 

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 @ 2023-07-30 00:02  yanghui01  阅读(3)  评论(0编辑  收藏  举报