예제 #1
0
        public void Duplicate()
        {
            GameObject[] selection = Selection.gameObjects;
            if (selection == null)
            {
                return;
            }

            Undo.BeginRecord();
            for (int i = 0; i < selection.Length; ++i)
            {
                GameObject selectedObj = selection[i];
                if (selectedObj != null)
                {
                    Transform  p    = selectedObj.transform.parent;
                    GameObject copy = Instantiate(selectedObj, selectedObj.transform.position, selectedObj.transform.rotation);
                    copy.transform.SetParent(p, true);

                    selection[i] = copy;
                    Undo.BeginRegisterCreateObject(copy);
                }
            }
            Undo.RecordSelection();
            Undo.EndRecord();

            bool isEnabled = Undo.Enabled;

            Undo.Enabled      = false;
            Selection.objects = selection;
            Undo.Enabled      = isEnabled;

            Undo.BeginRecord();

            for (int i = 0; i < selection.Length; ++i)
            {
                GameObject selectedObj = selection[i];
                if (selectedObj != null)
                {
                    Undo.RegisterCreatedObject(selectedObj);
                }
            }
            Undo.RecordSelection();
            Undo.EndRecord();
        }