Files
Main/Assets/Editor/DIY/ClearFbxUvClr/MenuItems.cs
2025-01-25 04:38:09 +08:00

81 lines
3.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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