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
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                