コード例 #1
0
        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();
        }
コード例 #2
0
        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 };
        }
コード例 #3
0
        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();
        }
コード例 #4
0
 public void OnClick(GameObject[] affectedObjectsArray)
 {
     Selection.objects = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray);
 }