static int[] PasteFoldersAfterCut(string destination = null) { List <string> pastedObjects = new List <string>(); string[] assetPaths = new string[assetClipboard.Count]; int counter = 0; foreach (var item in assetClipboard) { assetPaths[counter] = AssetDatabase.GetAssetPath(ObjectIdentifier.ToObject(item)); counter++; } if (counter > 0) { Undo.RegisterAssetsMoveUndo(assetPaths); } counter = 0; foreach (var item in assetClipboard) { var assetPath = assetPaths[counter]; var newPath = AssetDatabase.GenerateUniqueAssetPath(GetValidPath(assetPath, destination)); if (String.IsNullOrEmpty(AssetDatabase.MoveAsset(assetPath, newPath))) { pastedObjects.Add(newPath); counter++; } } Reset(); performedAction = PerformedAction.None; AssetDatabase.Refresh(); int[] copiedAssets = new int[pastedObjects.Count]; for (int i = 0; i < pastedObjects.Count; i++) { copiedAssets[i] = AssetDatabase.LoadMainAssetAtPath(pastedObjects[i]).GetInstanceID(); } return(copiedAssets); }
static IEnumerable <Object> PasteCutAssets(string destination = null) { List <string> pastedObjects = new List <string>(); string[] assetPaths = new string[assetClipboard.Count]; int counter = 0; foreach (var item in assetClipboard) { assetPaths[counter] = AssetDatabase.GetAssetPath(ObjectIdentifier.ToObject(item)); counter++; } if (counter > 0) { Undo.RegisterAssetsMoveUndo(assetPaths); } counter = 0; foreach (var item in assetClipboard) { var assetPath = assetPaths[counter]; var validPath = GetValidPath(assetPath, destination); var obj = AssetDatabase.LoadAssetAtPath(validPath, typeof(Object)); var newPath = assetPath != validPath && obj != null?AssetDatabase.GenerateUniqueAssetPath(validPath) : validPath; if (String.IsNullOrEmpty(AssetDatabase.ValidateMoveAsset(assetPath, newPath))) { AssetDatabase.MoveAsset(assetPath, newPath); pastedObjects.Add(newPath); } counter++; } Reset(); AssetDatabase.Refresh(); return(pastedObjects.Select(AssetDatabase.LoadMainAssetAtPath)); }