- Home /
how to drag and drop scriptable objects into a node of a nodegraph?
I have a dialogue tree editor which is run in unity's node graph. and I have a Scriptableobject that contains a bunch of quest data. i would like to be able to drag the scriptable object into the node. how do I do this?
as far as I am aware. I need to add a UI element to the node's extensionContainer using node.extensionContainer.Add(). but I am unsure if there is a GUI element that exists that can take an object, Kind of like a TextField, but i can drag and drop the Quest ScriptableObject in like shown in the gif above.
I want to be able to drag the quest scriptable object into a dialogue node, the same way you can drag a scriptable object into a behaviour script in the inspector, like this:
I would like to avoid using blackboards as I want the UI to be intuitive and drag-and-drop. is it possible to create a UI element like a textfield that accepts a Quest object instead of a string and then allow users to drag a scriptable object in like the gif you see above?
Answer by Arcturus125 · Dec 30, 2021 at 04:07 AM
okay. So it seems i must answer my own question.
in order to drag a scriptableobject into a node on a nodegraph, you must use EditorGUILayout.ObjectField
it is a field that can accept any object. but you must tell it which type to accept.
// create the object field
ObjectField objectfield = new ObjectField("Quest");
// tell the objectfield what type to accept (or it doesn't work)
objectfield.objectType = typeof(Quest);
// use a lambda function to run code when the value is changed
objectfield.RegisterValueChangedCallback((quest) =>
{
// run this when the value is changed
Debug.Log("Value changed");
});
// add the objectfield to the node's container
newNode.extensionContainer.Add(objectfield);
there are probably better ways of doing it, but this was all I could find.
i should note, that you do not need to use a lambda function, I just prefer it that way
IMPORTANT!!:: if you do not set objectfield.objectType then the object field will not work
Your answer
![](https://koobas.hobune.stream/wayback/20220613051050im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
ScriptableObject Inheritance 1 Answer
Can't open dialogue box when pressing button 0 Answers
List of ScriptableObjects lost on project reload 1 Answer
How can I save a deck of Cards (ScriptableObjects)? 0 Answers
A scriptable object for each variable, or one containing all those specific variables together? 0 Answers