protected override void DrawPropertyLayout(GUIContent label) { SirenixEditorGUI.BeginBox(); { SirenixEditorGUI.BeginToolbarBoxHeader(); { var rect = GUILayoutUtility.GetRect(0, 19); var unityObjectFieldRect = rect.Padding(2).AlignLeft(rect.width / 2); var methodSelectorRect = rect.Padding(2).AlignRight(rect.width / 2 - 5); var dInfo = this.GetDelegateInfo(); var intlabel = new GUIContent("some type"); EditorGUI.BeginChangeCheck(); var someType = SirenixEditorFields.Dropdown(intlabel, tempType, SupportedReturnTypes); /*public static bool Dropdown<T>(Rect rect, IList<int> selected, IList<T> items, bool multiSelection)*/ var newTarget = SirenixEditorFields.UnityObjectField(unityObjectFieldRect, dInfo.Target, typeof(UnityEngine.Object), true); if (EditorGUI.EndChangeCheck()) { this.tmpTarget = newTarget; this.tempType = someType; } EditorGUI.BeginChangeCheck(); var selectorText = (dInfo.Method == null || this.tmpTarget) ? "Select a method" : dInfo.Method.Name; var newMethod = MethodSelector.DrawSelectorDropdown(methodSelectorRect, selectorText, this.CreateSelector); if (EditorGUI.EndChangeCheck()) { this.CreateAndAssignNewDelegate(newMethod.FirstOrDefault()); this.tmpTarget = null; } } SirenixEditorGUI.EndToolbarBoxHeader(); // Draws the rest of the ICustomEvent, and since we've drawn the label, we simply pass along null. for (int i = 0; i < this.Property.Children.Count; i++) { var child = this.Property.Children[i]; if (child.Name == "Result") { continue; } child.Draw(); } } SirenixEditorGUI.EndBox(); }