using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; public class EditorCommonAPI : Editor { public static List LoadAllAssetsInPath(string path) where T : Object { List lists = new List(); DirectoryInfo directoryInfo = new DirectoryInfo(path); ScanCurretDirectory(directoryInfo, lists); return lists; } public static List LoadAllAssetsInAllPath(string path) where T : Object { List lists = new List(); DirectoryInfo directoryInfo = new DirectoryInfo(path); ScanChildDireations(directoryInfo, lists); return lists; } private static void ScanChildDireations(DirectoryInfo directoryInfo, List lists) where T : Object { ScanCurretDirectory(directoryInfo, lists); // 遍历当前路径下的子文件夹 DirectoryInfo[] dirs = directoryInfo.GetDirectories(); foreach (var info in dirs) { ScanChildDireations(info, lists); } } private static void ScanCurretDirectory(DirectoryInfo directoryInfo, List lists) where T : Object { FileInfo[] fileInfoList = directoryInfo.GetFiles(); foreach (var fileInfo in fileInfoList) { if (!fileInfo.FullName.EndsWith(".prefab") && !fileInfo.FullName.EndsWith(".asset")) continue; string assetName = fileInfo.FullName.Substring(Application.dataPath.Length - "Assets".Length).Replace('\\', '/'); T t = AssetDatabase.LoadAssetAtPath(assetName); if (t == null) { Debug.Log($"i am null {assetName}"); continue; } lists.Add(t); } } }