资源依赖复制工具
效果
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"); } } }