# AddDropHandlerV2

> Allow override of the default behavior for the corresponding window. Multiple handlers can be registered on the same window. If a handler returns DragAndDropVisualMode.None the system will check the next handler. Any other results ( DragAndDropVisualMode.Rejected or others DragAndDropVisualMode ) means this handler has processed the drop event and no other handler will be called. The last handler is the default Unity handler.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/6000.5/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

## AddDropHandlerV2(ProjectBrowserDropHandlerV2)

Allow override of the default behavior for the corresponding window. Multiple handlers can be registered on the same window. If a handler returns [DragAndDropVisualMode.None](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/none.md) the system will check the next handler. Any other results ([DragAndDropVisualMode.Rejected](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/rejected.md) or others [DragAndDropVisualMode](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode.md)) means this handler has processed the drop event and no other handler will be called. The last handler is the default Unity handler.

```csharp
public static void AddDropHandlerV2(DragAndDrop.ProjectBrowserDropHandlerV2 handler)
```

### Parameters

**** (\[ProjectBrowserDropHandlerV2]\(/engine/6000.5/script-reference/unityeditor/draganddrop/projectbrowserdrophandlerv2)): Function to handle drop on the corresponding window.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System;

static class DragDropSample
{
    static DragAndDropVisualMode ProjectHandler(EntityId id, string path, bool perform)
    {
        if (perform)
            Debug.Log($"Dropped upon {path} {id}");
        else
            Debug.Log($"Dragging upon {path} {id}");
        return DragAndDropVisualMode.Move;
    }

    public static void AddDragProjectHandler()
    {
        // Add the handler
        DragAndDrop.AddDropHandlerV2(ProjectHandler);
    }

    public static void RemoveProjectHandler()
    {
        // Remove the handler
        DragAndDrop.RemoveDropHandlerV2(ProjectHandler);
    }
}
```

## AddDropHandlerV2(SceneDropHandler)

Allow override of the default behavior for the corresponding window. Multiple handlers can be registered on the same window. If a handler returns [DragAndDropVisualMode.None](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/none.md) the system will check the next handler. Any other results ([DragAndDropVisualMode.Rejected](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/rejected.md) or others [DragAndDropVisualMode](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode.md)) means this handler has processed the drop event and no other handler will be called. The last handler is the default Unity handler.

```csharp
public static void AddDropHandlerV2(DragAndDrop.SceneDropHandler handler)
```

### Parameters

**** (\[SceneDropHandler]\(/engine/6000.5/script-reference/unityeditor/draganddrop/scenedrophandler)): Function to handle drop on the corresponding window.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System;

static class DragDropSample
{
    static DragAndDropVisualMode ProjectHandler(EntityId id, string path, bool perform)
    {
        if (perform)
            Debug.Log($"Dropped upon {path} {id}");
        else
            Debug.Log($"Dragging upon {path} {id}");
        return DragAndDropVisualMode.Move;
    }

    public static void AddDragProjectHandler()
    {
        // Add the handler
        DragAndDrop.AddDropHandlerV2(ProjectHandler);
    }

    public static void RemoveProjectHandler()
    {
        // Remove the handler
        DragAndDrop.RemoveDropHandlerV2(ProjectHandler);
    }
}
```

## AddDropHandlerV2(HierarchyDropHandlerV2)

Allow override of the default behavior for the corresponding window. Multiple handlers can be registered on the same window. If a handler returns [DragAndDropVisualMode.None](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/none.md) the system will check the next handler. Any other results ([DragAndDropVisualMode.Rejected](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/rejected.md) or others [DragAndDropVisualMode](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode.md)) means this handler has processed the drop event and no other handler will be called. The last handler is the default Unity handler.

```csharp
public static void AddDropHandlerV2(DragAndDrop.HierarchyDropHandlerV2 handler)
```

### Parameters

**** (\[HierarchyDropHandlerV2]\(/engine/6000.5/script-reference/unityeditor/draganddrop/hierarchydrophandlerv2)): Function to handle drop on the corresponding window.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System;

static class DragDropSample
{
    static DragAndDropVisualMode ProjectHandler(EntityId id, string path, bool perform)
    {
        if (perform)
            Debug.Log($"Dropped upon {path} {id}");
        else
            Debug.Log($"Dragging upon {path} {id}");
        return DragAndDropVisualMode.Move;
    }

    public static void AddDragProjectHandler()
    {
        // Add the handler
        DragAndDrop.AddDropHandlerV2(ProjectHandler);
    }

    public static void RemoveProjectHandler()
    {
        // Remove the handler
        DragAndDrop.RemoveDropHandlerV2(ProjectHandler);
    }
}
```

## AddDropHandlerV2(InspectorDropHandler)

Allow override of the default behavior for the corresponding window. Multiple handlers can be registered on the same window. If a handler returns [DragAndDropVisualMode.None](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/none.md) the system will check the next handler. Any other results ([DragAndDropVisualMode.Rejected](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode/rejected.md) or others [DragAndDropVisualMode](/engine/6000.5/script-reference/unityeditor/draganddropvisualmode.md)) means this handler has processed the drop event and no other handler will be called. The last handler is the default Unity handler.

```csharp
public static void AddDropHandlerV2(DragAndDrop.InspectorDropHandler handler)
```

### Parameters

**** (\[InspectorDropHandler]\(/engine/6000.5/script-reference/unityeditor/draganddrop/inspectordrophandler)): Function to handle drop on the corresponding window.

### Examples

```csharp
using UnityEditor;
using UnityEngine;
using System;

static class DragDropSample
{
    static DragAndDropVisualMode ProjectHandler(EntityId id, string path, bool perform)
    {
        if (perform)
            Debug.Log($"Dropped upon {path} {id}");
        else
            Debug.Log($"Dragging upon {path} {id}");
        return DragAndDropVisualMode.Move;
    }

    public static void AddDragProjectHandler()
    {
        // Add the handler
        DragAndDrop.AddDropHandlerV2(ProjectHandler);
    }

    public static void RemoveProjectHandler()
    {
        // Remove the handler
        DragAndDrop.RemoveDropHandlerV2(ProjectHandler);
    }
}
```
