using UnityEngine; using UnityEditor; using System.Collections.Generic; public class ResetParentTransform : EditorWindow { [MenuItem("Tools/Reset Parent Transform")] public static void ShowWindow() { GetWindow("Reset Parent Transform"); } private void OnGUI() { GUILayout.Label("Reset Parent Transform", EditorStyles.boldLabel); if (GUILayout.Button("Reset Transform for Selected Parent and Adjust Children")) { ResetTransform(); } } private void ResetTransform() { if (Selection.activeGameObject == null) { Debug.LogWarning("No GameObject selected. Please select a GameObject in the hierarchy."); return; } Transform parentTransform = Selection.activeGameObject.transform; if (parentTransform.childCount == 0) { Debug.LogWarning("Selected GameObject has no children. Operation aborted."); return; } List children = new List(); foreach (Transform child in parentTransform) { children.Add(child); } foreach (Transform child in children) { child.transform.parent = null; } // Reset the parent's transform to default values parentTransform.localPosition = Vector3.zero; parentTransform.localRotation = Quaternion.identity; parentTransform.localScale = Vector3.one; foreach (Transform child in children) { child.transform.parent = parentTransform; } Debug.Log("Parent transform reset and children adjusted."); } }