Property Drawer ArgumentException
Hello! I'm writing a custom drawer that adds buttons to methods with a given attribute. I got it to display at one point but, after some changes, I keep getting the ArgumentException: getting control 1's position in a group with only 1 controls when doing repaint
I tried reading a few of the other posts on the topic, and I found explanations as to why it happens, but can't figure out why it's happening on mine. This is the drawer:
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
if (property.propertyType != SerializedPropertyType.Boolean)
{
EditorGUILayout.HelpBox("The <color=blue>MethodButtonInvoker</color> attribute must
be assigned to a boolean value!", MessageType.Warning);
return;
}
EditorGUILayout.PropertyField(property, new GUIContent("Show Method Buttons"));
if (!property.boolValue) return;
var __owner = property.serializedObject.targetObject;
var __methods = __owner.GetType()
.GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance);
for (var __i = 0; __i < __methods.Length; __i++)
{
var __method = __methods[__i];
var __attribute = __method.GetAttribute<MethodButtonAttribute>();
if (__attribute == null) continue;
if (!GUILayout.Button(__method.Name)) continue;
__method.Invoke(__owner, new object[] { });
}
}
NOTE: The exception is thrown at line:
EditorGUILayout.PropertyField(property, new GUIContent("Show Method Buttons"));
Could anyone help me out? Thanks in advance!
Answer by Gizambica · May 26, 2020 at 04:41 PM
For anyone who has this issue:
Pretty much any conditions that change what should or should not be drawn in OnGUI should only be changed:
if (Event.current.type == EventType.Layout)
What I've done to fix it can be seen here: https://pastebin.com/zt3MnJfv
Your answer
Follow this Question
Related Questions
How to create a dynamical dropdown menu in Editor? 0 Answers
Property drawer with multiple fields: only first field has prefab override implemented 1 Answer
Change the color of a variable field if it is empty 0 Answers
OnSceneGUI with PropertyDrawer 2 Answers
How to make a dropdown in Unity Editor with list from another Monobehaviour Script 0 Answers