TheInitialProject/Assets/Scripts/UI/UIControl/EditorCommonAPI.cs
2024-10-23 16:59:02 +08:00

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);
}
}
}