using UnityEditor; using UnityEngine; using System.Collections.Generic; public class FBXMaterialChecker { [MenuItem("Tools/检查场景中 FBX 材质引用")] public static void CheckFBXMaterialsInScene() { var allRenderers = Object.FindObjectsOfType(); var fbxMaterials = new HashSet(); 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 材质被引用。请检查日志。"); } }