public void OnClick(GameObject[] affectedObjectsArray) { var ungroupedObjects = new List <GameObject>(); var onlytop = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray); foreach (var ungroupedRoot in onlytop) { var ungroupSiblinkIndex = ungroupedRoot.transform.GetSiblingIndex(); var ungroupParent = ungroupedRoot.transform.parent; var undoName = ungroupedRoot.name; for (int i = ungroupedRoot.transform.childCount - 1; i >= 0; i--) { var o = ungroupedRoot.transform.GetChild(i); Undo.SetTransformParent(o.transform, ungroupParent, "Remove " + undoName); if (!Application.isPlaying) { Undo.RegisterFullObjectHierarchyUndo(o, "Remove " + undoName); } o.SetSiblingIndex(ungroupSiblinkIndex); if (!Application.isPlaying) { EditorUtility.SetDirty(o); } ungroupedObjects.Add(o.gameObject); } Undo.DestroyObjectImmediate(ungroupedRoot); } Selection.objects = ungroupedObjects.ToArray(); }
public void OnClick(GameObject[] affectedObjectsArray) { var groupParent = affectedObjectsArray[0].transform.parent; var groupSiblingIndex = affectedObjectsArray[0].transform.GetSiblingIndex(); var groupRoot = new GameObject("GROUP " + affectedObjectsArray[0].name); groupRoot.transform.SetParent(groupParent, false); groupRoot.transform.localScale = Vector3.one; groupRoot.transform.SetSiblingIndex(groupSiblingIndex); MyMenu_Utils.AssignUniqueName(groupRoot); // name if (groupRoot.GetComponentsInParent <Canvas>(true).Length != 0) { // canvas var rect = groupRoot.AddComponent <RectTransform>(); rect.anchorMin = Vector2.zero; rect.anchorMax = Vector2.one; rect.offsetMin = Vector2.zero; rect.offsetMax = Vector2.zero; } Undo.RegisterCreatedObjectUndo(groupRoot, groupRoot.name); var onlytop = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray).OrderBy(go => go.transform.GetSiblingIndex()); foreach (var gameObject in onlytop) { Undo.SetTransformParent(gameObject.transform, groupRoot.transform, groupRoot.name); } HierarchyExtensions.Utilities.SetExpanded(groupRoot.GetInstanceID(), true); Selection.objects = onlytop.ToArray(); //Selection.objects = new[] { groubObject }; }
public void OnClick(GameObject[] affectedObjectsArray) { var onlytop = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray).OrderByDescending(o => o.transform.GetSiblingIndex()); List <GameObject> clonedObjects = new List <GameObject>(); foreach (var gameObject in onlytop) { var oldSib = gameObject.transform.GetSiblingIndex(); Selection.objects = new[] { gameObject }; HierarchyExtensions.Utilities.DuplicateSelection(); var clonedObject = Selection.activeGameObject; MyMenu_Utils.AssignUniqueName(clonedObject); clonedObject.transform.SetSiblingIndex(oldSib + 1); clonedObjects.Add(clonedObject); } Selection.objects = clonedObjects.ToArray(); }
public void OnClick(GameObject[] affectedObjectsArray) { Selection.objects = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray); }