private void DrawDropdown(UnityEngine.Object target, FieldInfo fieldInfo, string label, int selectedValueIndex, object[] values, string[] displayOptions) { EditorGUI.BeginChangeCheck(); int newIndex = EditorGUILayout.Popup(label, selectedValueIndex, displayOptions); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Dropdown"); fieldInfo.SetValue(target, values[newIndex]); if (target is MonoBehaviour mb) { ReflectionUtility.CallMethod(mb, "OnValidate"); } } }