Project_WL/Assets/Editor/MaterialChecker.cs

48 lines
1.4 KiB
C#

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public static class MaterialChecker
{
[MenuItem("Tools/Check Materials in Selected Object")]
private static void CheckSelectedObject()
{
// 현재 선택된 오브젝트
GameObject selectedObject = Selection.activeGameObject;
if (selectedObject == null)
{
Debug.LogWarning("오브젝트를 선택하세요.");
return;
}
// 자식의 MeshRenderer를 확인
MeshRenderer[] meshRenderers = selectedObject.GetComponentsInChildren<MeshRenderer>();
if (meshRenderers.Length == 0)
{
Debug.Log($"'{selectedObject.name}'에는 MeshRenderer가 포함된 자식 오브젝트가 없습니다.");
return;
}
// 매터리얼 수집
HashSet<Material> uniqueMaterials = new HashSet<Material>();
foreach (var renderer in meshRenderers)
{
foreach (var material in renderer.sharedMaterials)
{
if (material != null)
{
uniqueMaterials.Add(material);
}
}
}
// 결과 로그 출력
Debug.Log($"'{selectedObject.name}'에 사용된 고유한 매터리얼 수: {uniqueMaterials.Count}");
int i = 0;
foreach (var material in uniqueMaterials)
{
Debug.Log($"{i++} : {material.name}", material);
}
}
}