241 lines
9.2 KiB
C#
241 lines
9.2 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using System;
|
|
using Thousandto.Editor.Excel;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using UnityEngine.Profiling;
|
|
|
|
public class ResCheckEditor
|
|
{
|
|
[MenuItem("Ares/检查所有图片资源并导出")]
|
|
static void ExportAllTextureInfo()
|
|
{
|
|
string excelPath = EditorUtility.SaveFilePanel("Export Excel", "", "", "xlsx");
|
|
if (string.IsNullOrEmpty(excelPath))
|
|
return;
|
|
|
|
NormalExcelInfo excelInfo = new NormalExcelInfo();
|
|
excelInfo.Name = "textureinfo";
|
|
var allTexture = AssetDatabase.FindAssets("t:Texture");
|
|
excelInfo.Values = new string[allTexture.Length + 1, 6];
|
|
excelInfo.Values[0, 0] = "path";
|
|
excelInfo.Values[0, 1] = "name";
|
|
excelInfo.Values[0, 2] = "mipmapEnabled";
|
|
excelInfo.Values[0, 3] = "isReadable";
|
|
excelInfo.Values[0, 4] = "size";
|
|
excelInfo.Values[0, 5] = "format";
|
|
for (int i = 0; i < allTexture.Length; ++i)
|
|
{
|
|
try
|
|
{
|
|
var path = AssetDatabase.GUIDToAssetPath(allTexture[i]);
|
|
TextureImporter im = TextureImporter.GetAtPath(path) as TextureImporter;
|
|
if (im != null)
|
|
{
|
|
excelInfo.Values[i + 1, 0] = path;
|
|
excelInfo.Values[i + 1, 1] = im.assetBundleName;
|
|
excelInfo.Values[i + 1, 2] = im.mipmapEnabled ? "true" : "false";
|
|
excelInfo.Values[i + 1, 3] = im.isReadable ? "true" : "false";
|
|
var readable = im.isReadable;
|
|
|
|
im.isReadable = true;
|
|
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
|
|
var tex = AssetDatabase.LoadAssetAtPath<Texture2D>(path);
|
|
if (tex != null)
|
|
{
|
|
var rowData = tex.GetRawTextureData<byte>();
|
|
excelInfo.Values[i + 1, 4] = rowData.Length.ToString();
|
|
excelInfo.Values[i + 1, 5] = tex.format.ToString();
|
|
im.isReadable = readable;
|
|
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
|
|
}
|
|
|
|
EditorUtility.DisplayProgressBar(string.Format("导出中 {0}/{1}", i, allTexture.Length), path, (float)i / allTexture.Length);
|
|
}
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
|
|
}
|
|
}
|
|
ExcelWriter.Write(excelPath, excelInfo);
|
|
EditorUtility.ClearProgressBar();
|
|
}
|
|
|
|
[MenuItem("Ares/检查所有模型资源并导出")]
|
|
static void ExportAllMeshInfo()
|
|
{
|
|
string excelPath = EditorUtility.SaveFilePanel("Export Excel", "", "", "xlsx");
|
|
if (string.IsNullOrEmpty(excelPath))
|
|
return;
|
|
|
|
NormalExcelInfo excelInfo = new NormalExcelInfo();
|
|
excelInfo.Name = "meshinfo";
|
|
var allModel = AssetDatabase.FindAssets("t:Model");
|
|
var meshList = new List<Mesh>(allModel.Length * 2);
|
|
var pathList = new List<string>(allModel.Length * 2);
|
|
for (int i = 0; i < allModel.Length; ++i)
|
|
{
|
|
try
|
|
{
|
|
var path = AssetDatabase.GUIDToAssetPath(allModel[i]);
|
|
var assets = AssetDatabase.LoadAllAssetsAtPath(path);
|
|
if (assets != null)
|
|
{
|
|
for (int j = 0; j < assets.Length; ++j)
|
|
{
|
|
var mesh = assets[j] as Mesh;
|
|
if (mesh != null)
|
|
{
|
|
pathList.Add(path);
|
|
meshList.Add(mesh);
|
|
}
|
|
}
|
|
EditorUtility.DisplayProgressBar(string.Format("导出中 {0}/{1}", i, allModel.Length), path, (float)i / allModel.Length);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
}
|
|
}
|
|
excelInfo.Values = new string[meshList.Count + 1, 5];
|
|
excelInfo.Values[0, 0] = "path";
|
|
excelInfo.Values[0, 1] = "name";
|
|
excelInfo.Values[0, 2] = "verts";
|
|
excelInfo.Values[0, 3] = "tris";
|
|
excelInfo.Values[0, 4] = "uv";
|
|
for (int i = 0; i < meshList.Count; ++i)
|
|
{
|
|
var mesh = meshList[i];
|
|
excelInfo.Values[i + 1, 0] = pathList[i];
|
|
excelInfo.Values[i + 1, 1] = mesh.name;
|
|
excelInfo.Values[i + 1, 2] = mesh.vertexCount.ToString();
|
|
excelInfo.Values[i + 1, 3] = (mesh.triangles.LongLength / 3).ToString();
|
|
if (mesh.uv8 != null && mesh.uv8.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "8";
|
|
}
|
|
else if(mesh.uv7 != null && mesh.uv7.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "7";
|
|
}
|
|
else if(mesh.uv6 != null && mesh.uv6.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "6";
|
|
}
|
|
else if(mesh.uv5 != null && mesh.uv5.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "5";
|
|
}
|
|
else if(mesh.uv4 != null && mesh.uv4.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "4";
|
|
}
|
|
else if(mesh.uv3 != null && mesh.uv3.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "3";
|
|
}
|
|
else if(mesh.uv2 != null && mesh.uv2.Length > 0)
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "2";
|
|
}
|
|
else
|
|
{
|
|
excelInfo.Values[i + 1, 4] = "1";
|
|
}
|
|
}
|
|
ExcelWriter.Write(excelPath, excelInfo);
|
|
EditorUtility.ClearProgressBar();
|
|
}
|
|
|
|
[MenuItem("Ares/检查所有动作资源并导出")]
|
|
static void ExportAllAnimationInfo()
|
|
{
|
|
string excelPath = EditorUtility.SaveFilePanel("Export Excel", "", "", "xlsx");
|
|
if (string.IsNullOrEmpty(excelPath))
|
|
return;
|
|
|
|
NormalExcelInfo excelInfo = new NormalExcelInfo();
|
|
excelInfo.Name = "meshinfo";
|
|
var allModel = AssetDatabase.FindAssets("t:Model");
|
|
var allAnimation = AssetDatabase.FindAssets("t:AnimationClip");
|
|
var allCount = allModel.Length + allAnimation.Length;
|
|
var meshList = new List<AnimationClip>(allCount);
|
|
var pathList = new List<string>(allCount);
|
|
var fileNameList = new List<string>(allCount);
|
|
|
|
for (int i = 0; i < allModel.Length; ++i)
|
|
{
|
|
try
|
|
{
|
|
var path = AssetDatabase.GUIDToAssetPath(allModel[i]);
|
|
var assets = AssetDatabase.LoadAllAssetsAtPath(path);
|
|
if (assets != null)
|
|
{
|
|
var asset = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
|
for (int j = 0; j < assets.Length; ++j)
|
|
{
|
|
var clip = assets[j] as AnimationClip;
|
|
if (clip != null && !clip.name.StartsWith("__preview__"))
|
|
{
|
|
pathList.Add(path);
|
|
meshList.Add(clip);
|
|
fileNameList.Add(asset.name);
|
|
}
|
|
}
|
|
EditorUtility.DisplayProgressBar(string.Format("导出中 {0}/{1}", i, allCount), path, (float)i / allCount);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < allAnimation.Length; ++i)
|
|
{
|
|
try
|
|
{
|
|
var path = AssetDatabase.GUIDToAssetPath(allAnimation[i]);
|
|
var assets = AssetDatabase.LoadAllAssetsAtPath(path);
|
|
if (assets != null)
|
|
{
|
|
for (int j = 0; j < assets.Length; ++j)
|
|
{
|
|
var clip = assets[j] as AnimationClip;
|
|
if (clip != null)
|
|
{
|
|
pathList.Add(path);
|
|
meshList.Add(clip);
|
|
fileNameList.Add(clip.name);
|
|
}
|
|
}
|
|
EditorUtility.DisplayProgressBar(string.Format("导出中 {0}/{1}", i + allModel.Length, allCount), path, (float)(i + allModel.Length) / allCount);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
}
|
|
}
|
|
|
|
excelInfo.Values = new string[meshList.Count + 1, 6];
|
|
excelInfo.Values[0, 0] = "path";
|
|
excelInfo.Values[0, 1] = "file";
|
|
excelInfo.Values[0, 2] = "name";
|
|
excelInfo.Values[0, 3] = "fps";
|
|
excelInfo.Values[0, 4] = "length";
|
|
excelInfo.Values[0, 5] = "memsize";
|
|
for (int i = 0; i < meshList.Count; ++i)
|
|
{
|
|
var mesh = meshList[i];
|
|
excelInfo.Values[i + 1, 0] = pathList[i];
|
|
excelInfo.Values[i + 1, 1] = fileNameList[i];
|
|
excelInfo.Values[i + 1, 2] = mesh.name;
|
|
excelInfo.Values[i + 1, 3] = mesh.frameRate.ToString();
|
|
excelInfo.Values[i + 1, 4] = mesh.length.ToString();
|
|
excelInfo.Values[i + 1, 5] = Profiler.GetRuntimeMemorySizeLong(mesh).ToString();
|
|
}
|
|
ExcelWriter.Write(excelPath, excelInfo);
|
|
EditorUtility.ClearProgressBar();
|
|
}
|
|
} |