using UnityEditor; using UnityEngine; using System.Linq; public class RenameSelectedObjects : EditorWindow { private string baseName = "NewObject"; [MenuItem("Tools/Rename Selected Objects")] public static void ShowWindow() { GetWindow("Rename Objects"); } private void OnGUI() { GUILayout.Label("Rename Selected Objects", EditorStyles.boldLabel); baseName = EditorGUILayout.TextField("Base Name", baseName); if (GUILayout.Button("Rename")) { RenameObjects(); } } private void RenameObjects() { var selectedObjects = Selection.gameObjects; if (selectedObjects.Length == 0) { EditorUtility.DisplayDialog("No Objects Selected", "Please select at least one object in the Hierarchy.", "OK"); return; } // Sort selected objects by their sibling index (Hierarchy order) var sortedObjects = selectedObjects .OrderBy(obj => obj.transform.GetSiblingIndex()) .ToArray(); Undo.RecordObjects(sortedObjects, "Rename Objects"); for (int i = 0; i < sortedObjects.Length; i++) { sortedObjects[i].name = $"{baseName} ({i + 1})"; } EditorUtility.DisplayDialog("Rename Complete", $"Renamed {sortedObjects.Length} objects.", "OK"); } }