Files
tools/Unity C++脚本/RenameSelectObjects.cs
2025-08-01 10:50:57 +08:00

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");
}
}