35 lines
1.2 KiB
C#
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 材质被引用。请检查日志。");
|
|
}
|
|
} |