using UnityEngine; using UnityEditor; using System.Linq; public class LODSetup : EditorWindow { [MenuItem("Tools/Setup LODs")] public static void SetupLODs() { foreach (var selectedObject in Selection.gameObjects) { SetupLODForGameObject(selectedObject); } } private static void SetupLODForGameObject(GameObject go) { // Get all child objects that have _LOD in their name. var lodObjects = go.transform.Cast() .Where(t => t.name.Contains("_LOD")) .OrderBy(t => t.name) .Select(t => t.gameObject) .ToArray(); if (lodObjects.Length == 0) return; var lodGroup = go.AddComponent(); var lods = new LOD[lodObjects.Length]; for (int i = 0; i < lodObjects.Length; i++) { lods[i] = new LOD(1.0f / (i + 1), lodObjects[i].GetComponentsInChildren()); } lodGroup.SetLODs(lods); lodGroup.RecalculateBounds(); } }