73 lines
2.4 KiB
C#
73 lines
2.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);
|
|
}
|
|
}
|
|
|
|
[MenuItem("Tools/Remove Specific Components")]
|
|
private static void RemoveComponentsFromSelected()
|
|
{
|
|
// 현재 선택된 오브젝트
|
|
GameObject selectedObject = Selection.activeGameObject;
|
|
|
|
if (selectedObject == null)
|
|
{
|
|
Debug.LogWarning("오브젝트를 선택하세요.");
|
|
return;
|
|
}
|
|
|
|
MeshCollider[] meshcoll = selectedObject.GetComponentsInChildren<MeshCollider>();
|
|
for (int i = 0; i < meshcoll.Length; i++)
|
|
Object.DestroyImmediate(meshcoll[i]);
|
|
|
|
CapsuleCollider[] capsuleCollider = selectedObject.GetComponentsInChildren<CapsuleCollider>();
|
|
for (int i = 0; i < capsuleCollider.Length; i++)
|
|
Object.DestroyImmediate(capsuleCollider[i]);
|
|
|
|
LODGroup[] lodGroup = selectedObject.GetComponentsInChildren<LODGroup>();
|
|
for (int i = 0; i < lodGroup.Length; i++)
|
|
Object.DestroyImmediate(lodGroup[i]);
|
|
}
|
|
} |