public static void OnSceneDrag(SceneView sceneView) { Event current = Event.current; if (current.type != EventType.DragUpdated && current.type != EventType.DragPerform && current.type != EventType.DragExited) { return; } Sprite[] spriteFromDraggedPathsOrObjects = SpriteUtility.GetSpriteFromDraggedPathsOrObjects(); if (spriteFromDraggedPathsOrObjects.Length == 0) { return; } Sprite x = spriteFromDraggedPathsOrObjects[0]; if (x == null) { return; } DragAndDrop.visualMode = DragAndDropVisualMode.Copy; EventType type = current.type; if (type == EventType.DragPerform) { Vector3 point = HandleUtility.GUIPointToWorldRay(current.mousePosition).GetPoint(10f); point.z = 0f; GameObject objectToUndo = SpriteUtility.DropFramesToSceneToCreateGO(spriteFromDraggedPathsOrObjects, point); Undo.RegisterCreatedObjectUndo(objectToUndo, "Create Sprite"); current.Use(); } }