Skip to content

Instantly share code, notes, and snippets.

@bzgeb
Created September 28, 2012 14:52
Show Gist options
  • Star 88 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save bzgeb/3800350 to your computer and use it in GitHub Desktop.
Save bzgeb/3800350 to your computer and use it in GitHub Desktop.
Example Drag & Drop area in a custom inspector for the Unity editor
using UnityEngine;
using System.Collections;
using UnityEditor;
[CustomEditor (typeof(TriggerContainer))]
public class TriggerContainerEditor : Editor
{
private SerializedObject obj;
public void OnEnable ()
{
obj = new SerializedObject (target);
}
public override void OnInspectorGUI ()
{
DrawDefaultInspector ();
EditorGUILayout.Space ();
DropAreaGUI ();
}
public void DropAreaGUI ()
{
Event evt = Event.current;
Rect drop_area = GUILayoutUtility.GetRect (0.0f, 50.0f, GUILayout.ExpandWidth (true));
GUI.Box (drop_area, "Add Trigger");
switch (evt.type) {
case EventType.DragUpdated:
case EventType.DragPerform:
if (!drop_area.Contains (evt.mousePosition))
return;
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
if (evt.type == EventType.DragPerform) {
DragAndDrop.AcceptDrag ();
foreach (Object dragged_object in DragAndDrop.objectReferences) {
// Do On Drag Stuff here
}
}
break;
}
}
}
@bzgeb
Copy link
Author

bzgeb commented May 17, 2020

Could you call GetComponent on the dragged game object?

@Elijahdanie
Copy link

Thanks a big Bunch!!!!

@Elijahdanie
Copy link

Elijahdanie commented May 19, 2020

This is nice, but how do you get a reference to the component being dragged instead of the entire object? For example, I want to drag a specific MonoBehavior component attached to the object so that I can add it to a list of behaviors to enable or disable, but the dragged_object only references the GameObject that the behavior is attached to.

How about Getting the GameObject and then call Getcomponent on it.
Gameobject obj = dragged_object as GameObject;
T type = obj.GetComponent< T >();

Give it a try

@magiquep
Copy link

No, GetComponent can't be called on Object. Anyway, I figured out my original issue which led me to try this solution so I don't need it anymore.

@Idle1man
Copy link

goodWork

@WeAthFoLD
Copy link

Wonderful!

@iendsl
Copy link

iendsl commented Mar 16, 2021

<3

@HoogsterInc
Copy link

I love you most. More than all those people from past years.
Seriously thanks for this - trying to jump into the Editor coding has been rough for me, and this gave me a great platform to jump into it.

@SiarheiPilat
Copy link

Dian son, this is good, thanks!

@loadinggames
Copy link

What a gigachad

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment