Files
Main/Assets/Editor/DIY/ClearFbxUvClr/MenuItems.cs

81 lines
3.2 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEditor;
using UnityEngine;
namespace PolyReduction
{
/// <summary>
/// 所有菜单项都从这里出口
/// </summary>
public class ClearFbxUvClrMenuItems
{
//任务配置检测的菜单
[MenuItem("Funcell/清楚Fbx顶点Color和Uv属性", false, 900)]
public static void Start()
{
StringBuilder sb = new StringBuilder();
string exeFullPath = System.Environment.CurrentDirectory;
exeFullPath = exeFullPath.Replace("Client\\Main", "Tool\\ClearUvClr");
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = exeFullPath + "\\ClearUv_Clr.exe";
string RootPath = Application.dataPath;
RootPath = RootPath.Substring(0, RootPath.LastIndexOf("/")) + "/";
var allFbx = AssetDatabase.FindAssets("t:Model");
int index = 0;
for (int i = 0; i < allFbx.Length; i++)
{
string fbxPath = AssetDatabase.GUIDToAssetPath(allFbx[i]);
if (fbxPath.Contains(" "))
{
Debug.LogError(string.Format("Path:{0}-----有空格处理不了!!!!", fbxPath));
continue;
}
var assets = AssetDatabase.LoadAllAssetsAtPath(fbxPath);
if (assets != null)
{
bool bNeedAdd = false;
bool bNeedColor = false;
for (int j = 0; j < assets.Length; ++j)
{
var mesh = assets[j] as Mesh;
if (mesh != null)
{
if (mesh.uv3.Length != 0 || mesh.uv4.Length != 0
|| mesh.uv5.Length != 0
|| mesh.uv6.Length != 0
|| mesh.uv7.Length != 0
|| mesh.uv8.Length != 0)
{
bNeedAdd = true;
}
if (!fbxPath.Contains("_color"))
{
if (mesh.colors.Length != 0)
{
bNeedColor = true;
}
}
}
}
if (bNeedAdd)
{
//exe里会处理参数空格前的是输入的路径空格后的是fbx输出的路径
string arg1 = bNeedAdd ? "1" : "0";
string arg2 = bNeedColor ? "1" : "0";
string src = RootPath + fbxPath;
sb.Append(" " + src + " " + arg1 + " " + arg2);
index += 1;
}
}
}
string str = string.Format("{0}{1}", index, sb.ToString());
psi.Arguments = str;
System.Diagnostics.Process.Start(psi);
}
}
}