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(); if (meshRenderers.Length == 0) { Debug.Log($"'{selectedObject.name}'에는 MeshRenderer가 포함된 자식 오브젝트가 없습니다."); return; } // 고유한 매터리얼 저장용 HashSet HashSet uniqueMaterials = new HashSet(); 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) { string path = AssetDatabase.GetAssetPath(material); // 매터리얼 경로 Debug.Log($"{i++} : {material.name} (Path: {path})", material); } } [MenuItem("Tools/Remove Specific Components")] private static void RemoveComponentsFromSelected() { // 현재 선택된 오브젝트 GameObject selectedObject = Selection.activeGameObject; if (selectedObject == null) { Debug.LogWarning("오브젝트를 선택하세요."); return; } MeshCollider[] meshcoll = selectedObject.GetComponentsInChildren(); for (int i = 0; i < meshcoll.Length; i++) Object.DestroyImmediate(meshcoll[i]); CapsuleCollider[] capsuleCollider = selectedObject.GetComponentsInChildren(); for (int i = 0; i < capsuleCollider.Length; i++) Object.DestroyImmediate(capsuleCollider[i]); LODGroup[] lodGroup = selectedObject.GetComponentsInChildren(); for (int i = 0; i < lodGroup.Length; i++) Object.DestroyImmediate(lodGroup[i]); } [MenuItem("Tools/Child 0 name is parent name")] private static void tttttttttttttttttttttttttttt() { var selectedObjects = Selection.gameObjects; foreach (var go in selectedObjects) { go.transform.GetChild(0).name = go.name; } } }