How to create a dynamical dropdown menu in Editor?
Hi,
I'm trying to have a dynamical dropdown menu in my Editor. I'll explain: I want to enter a public list of string in one of my script and according to this list I want another script to have string value that I select with a dropdown list (the public list from my first script). That I already have but I've got 2 problems:
First thing: it's not completely dynamic, when I fill my list in my first script I have to run my app first and then I can use my dropdown list in my second script, so how can I make it so when I edit my first script it automatically edit the dropdown list?
And then: It's probably link to the first problem but if I edit my list then all occurences of the element I edited disapears.
Any idea what I'm doing Wrong? Here's my scripts:
My property drawer, GeneralInfo.RiskSituations is the string list of situations and RiskHandler.RiskSituations is a structure in the script RiskHandler, the value is what I'm getting from the dropdown list.
[CustomPropertyDrawer(typeof(RiskHandler.RiskSituations))]
public class RiskSituations : PropertyDrawer
{
private static readonly string[] situations = GameObject.FindObjectOfType<GeneralInfo>().RiskSituations.ToArray();
static readonly GUIContent[] situationsGUIContents = Array.ConvertAll(situations, i => new GUIContent(i));
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
property = property.FindPropertyRelative("value");
EditorGUI.BeginChangeCheck();
int selectedIndex = Array.IndexOf(situations, property.stringValue);
selectedIndex = EditorGUI.Popup(position, label, selectedIndex, situationsGUIContents);
if (EditorGUI.EndChangeCheck())
{
property.stringValue = situations[selectedIndex];
}
}
}
Your answer
Follow this Question
Related Questions
Property Drawer ArgumentException 1 Answer
How to make a dropdown in Unity Editor with list from another Monobehaviour Script 0 Answers
How to add a component from a Custom Editor object field to a Prefab ? 1 Answer
PropertyDrawer with child class 0 Answers
PrefabUtility.CreatePrefab() results in "not a valid asset file name" error? 2 Answers