-
-
Save bzgeb/3800350 to your computer and use it in GitHub Desktop.
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; | |
} | |
} | |
} |
Couldn't love you more.
Everyone, everyone... just calm down. I love bzgeb more than any of you.
Thank you for this. You have saved me hours--no DAYS of searching.
Thanks a world !!
@bzgeb - thank you for this!
For anyone experiencing issues using this method to capture and process Sprite types (or any other type that does not properly cast from Object, try using DragAndDrop.paths
and then process using AssetDatabase.LoadResources<Type>(path)
. Refer to this forum post: https://stackoverflow.com/questions/39474689/how-to-drag-and-drop-multiple-sprites-in-inspector
I had to do this to properly collect and cast Sprites dropped on the field.
You're a legend! Is there a way to only draw the box if a drag is occuring?
I love you~
Guys, what are you turning this comment section into! Can you please be serious?
bzgeb My love for you is like the raging sea,
So powerful and deep it will forever be.
Through storm, wind, and heavy rain,
It will withstand every pain.
Oh I love you so much!
@bzgeb - thank you for this!
For anyone experiencing issues using this method to capture and process Sprite types (or any other type that does not properly cast from Object, try using
DragAndDrop.paths
and then process usingAssetDatabase.LoadResources<Type>(path)
. Refer to this forum post: https://stackoverflow.com/questions/39474689/how-to-drag-and-drop-multiple-sprites-in-inspectorI had to do this to properly collect and cast Sprites dropped on the field.
Love you too!!!
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.
Could you call GetComponent on the dragged game object?
Thanks a big Bunch!!!!
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
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.
goodWork
Wonderful!
<3
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.
Dian son, this is good, thanks!
What a gigachad
I love you