51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
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<RenameSelectedObjects>("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");
|
|
}
|
|
}
|