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

44 lines
1.5 KiB
C#

using UnityEditor;
using UnityEngine;
public class AddParentToSelected : Editor
{
[MenuItem("Tools/Add Parent To Selected Objects")]
public static void AddParentForSelectedObjects()
{
GameObject[] selectedObjects = Selection.gameObjects;
if (selectedObjects.Length == 0)
{
Debug.LogWarning("No objects selected. Please select objects in the Hierarchy.");
return;
}
foreach (GameObject obj in selectedObjects)
{
int siblingIndex = obj.transform.GetSiblingIndex();
Transform parent = obj.transform.parent;
GameObject newParent = new GameObject($"{obj.name}_Root");
Undo.RegisterCreatedObjectUndo(newParent, "Create Parent Object");
if (parent != null)
{
newParent.transform.SetParent(parent);
}
newParent.transform.position = obj.transform.position;
newParent.transform.rotation = obj.transform.rotation;
newParent.transform.localScale = obj.transform.localScale;
newParent.transform.position = obj.transform.position;
Undo.SetTransformParent(obj.transform, newParent.transform, "Set New Parent");
newParent.transform.SetSiblingIndex(siblingIndex);
obj.transform.localRotation = Quaternion.identity;
obj.transform.localScale = Vector3.one;
}
Debug.Log("New parent objects created for selected objects.");
}
}