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(); }