Unity統計文件夾下某種類型的資源數量

功能:統計文件夾下某類型所有資源的數量,包括子文件夾;

用法:指定文件夾路徑,並通過輸入文件的後綴名代表文件類型(不需要加.符號)

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

),然後點擊計算即可;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章