Net.Like.Xue.Tokyo/Packages-Local/Net.BITKit.Bounds.Unity/CheckFBXMaterialsInScene.cs

35 lines
1.2 KiB
C#

using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
public class FBXMaterialChecker
{
[MenuItem("Tools/检查场景中 FBX 材质引用")]
public static void CheckFBXMaterialsInScene()
{
var allRenderers = Object.FindObjectsOfType<Renderer>();
var fbxMaterials = new HashSet<Material>();
foreach (var renderer in allRenderers)
{
foreach (var mat in renderer.sharedMaterials)
{
if (!mat) continue;
string path = AssetDatabase.GetAssetPath(mat);
if (string.IsNullOrEmpty(path)) continue;
if (path.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase) || path.Contains(".fbx/"))
{
Debug.LogWarning($"对象 [{renderer.name}] 使用了 FBX 材质: {mat.name} ({path})", renderer);
fbxMaterials.Add(mat);
}
}
}
if (fbxMaterials.Count == 0)
Debug.Log("✅ 场景中没有引用来自 FBX 的材质。");
else
Debug.Log($"⚠️ 场景中共有 {fbxMaterials.Count} 个 FBX 材质被引用。请检查日志。");
}
}