64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
public class EditorCommonAPI : Editor
|
|
{
|
|
public static List<T> LoadAllAssetsInPath<T>(string path) where T : Object
|
|
{
|
|
List<T> lists = new List<T>();
|
|
|
|
DirectoryInfo directoryInfo = new DirectoryInfo(path);
|
|
|
|
ScanCurretDirectory<T>(directoryInfo, lists);
|
|
|
|
return lists;
|
|
}
|
|
|
|
public static List<T> LoadAllAssetsInAllPath<T>(string path) where T : Object
|
|
{
|
|
List<T> lists = new List<T>();
|
|
|
|
DirectoryInfo directoryInfo = new DirectoryInfo(path);
|
|
|
|
ScanChildDireations<T>(directoryInfo, lists);
|
|
|
|
return lists;
|
|
}
|
|
|
|
private static void ScanChildDireations<T>(DirectoryInfo directoryInfo, List<T> lists) where T : Object
|
|
{
|
|
ScanCurretDirectory<T>(directoryInfo, lists);
|
|
|
|
// 遍历当前路径下的子文件夹
|
|
DirectoryInfo[] dirs = directoryInfo.GetDirectories();
|
|
foreach (var info in dirs)
|
|
{
|
|
ScanChildDireations<T>(info, lists);
|
|
}
|
|
}
|
|
|
|
private static void ScanCurretDirectory<T>(DirectoryInfo directoryInfo, List<T> 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<T>(assetName);
|
|
if (t == null)
|
|
{
|
|
Debug.Log($"i am null {assetName}");
|
|
continue;
|
|
}
|
|
|
|
lists.Add(t);
|
|
}
|
|
}
|
|
}
|