using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEditor; namespace BFEditor.Resource { public class MeshTool { public static List checkPath = new List(){ "assets/arts/effects/", "assets/arts/models/characters/", "assets/arts/models/maincity/", "assets/arts/models/weapon/", }; public static Dictionary> results = new Dictionary>(); public static bool CheckedOver = false; public static void Clear() { results.Clear(); } public static void Check() { results.Clear(); CheckedOver = false; List allFbxPath = new List(); foreach(string path in checkPath) { string[] directories = Directory.GetDirectories(path); foreach(string dPath in directories) { string[] fbxFiles = Directory.GetFiles(dPath, "*.FBX"); for(int i = 0; i < fbxFiles.Length; i ++) { allFbxPath.Add(fbxFiles[i]); } } } foreach(string path in allFbxPath) { GameObject go = AssetDatabase.LoadAssetAtPath(path); MeshFilter[] meshFilters= go.GetComponentsInChildren(); List mesh = new List(); for (int j = 0; j < meshFilters.Length; j++) { if (!mesh.Contains( meshFilters[j])) { mesh.Add(meshFilters[j]); } } int vertexCount=0; int triangles=0; for (int i = 0; i < mesh.Count; i++) { vertexCount += mesh[i].sharedMesh.vertexCount; triangles += mesh[i].sharedMesh.triangles.Length/3; } results[path] = new Dictionary(); results[path].Add("vertexCount", vertexCount); results[path].Add("triangles", triangles); } CheckedOver = true; } } }