功能:統計文件夾下某類型所有資源的數量,包括子文件夾;
用法:指定文件夾路徑,並通過輸入文件的後綴名代表文件類型(不需要加.符號)
using UnityEngine;
using UnityEditor;
using System.IO;
public class AssetCountWindow : EditorWindow
{
public string assetFolderPath;
public string assetType;
[MenuItem ("Tools/Check Asset Count")]
public static void ShowWindow () {
EditorWindow thisWindow = EditorWindow.GetWindow(typeof(AssetCountWindow));
thisWindow.titleContent = new GUIContent("獲取資源數量");
thisWindow.position = new Rect(Screen.width/2, Screen.height/2, 600, 800);
}
void OnGUI()
{
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("輸入資源類型");
assetType = EditorGUILayout.TextField(assetType);
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("選擇文件夾");
EditorGUILayout.TextField(assetFolderPath);
if (GUILayout.Button("選擇"))
{
assetFolderPath = EditorUtility.OpenFolderPanel("選擇文件夾", assetFolderPath, "");
}
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("開始計算") && assetType != null && assetFolderPath != null)
{
Count();
}
}
private void Count()
{
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(assetFolderPath);
int result = GetFilesCount(dirInfo);
EditorUtility.DisplayDialog("文件數量統計", assetType + "類型文件數量個數: " + result, "確定", null);
}
private int GetFilesCount(DirectoryInfo dirInfo)
{
int totalFile = 0;
totalFile += dirInfo.GetFiles("*." + assetType).Length;//獲取某種格式
foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
{
totalFile += GetFilesCount(subdir);
}
return totalFile;
}
}
),然後點擊計算即可;