using UnityEditor;
using UnityEngine;
using System.Linq;
public class RenameObjects : MonoBehaviour
{
[MenuItem("Tools/Rename Selected Objects")]
private static void RenameSelectedObjects()
{
// 获取选中的所有物体
GameObject[] selectedObjects = Selection.gameObjects;
if (selectedObjects.Length == 0)
{
Debug.LogWarning("没有选中任何物体!");
return;
}
// 排序选中的物体
selectedObjects = selectedObjects.OrderBy(o => GetHierarchyPath(o.transform)).ToArray();
// 获取第一个物体的新名称
string baseName = selectedObjects[0].name;
// 重命名所有选中的物体
for (int i = 0; i < selectedObjects.Length; i++)
{
selectedObjects[i].name = $"{baseName}_{i + 1}";
}
}
// 获取物体在层次结构中的路径
private static string GetHierarchyPath(Transform transform)
{
string path = "";
while (transform != null)
{
path = transform.GetSiblingIndex().ToString("D4") + path;
transform = transform.parent;
}
return path;
}
}
第一步 选中所有想修改的物体后修改Inspector里的名字
第二步 点击菜单栏
完成
注:使用时需要新建一个文件夹Editor 编辑器扩展相关的脚本都要放在该文件夹内,该文件夹中的脚本只会对Unity编辑器起作用。 项目打包的时候,不会被打包到项目中。如果编辑器相关脚本不放在该文件夹中,打包项目可能会出错。