- Home /
Question by
dbrizov · Jan 14, 2020 at 10:04 PM ·
custompropertydrawergroup
Custom Decorator Drawer Issue - BoxGroup is shifted down by 1 row
Hi guys. I am creating a [BoxGroup] attribute that will group serialized fields. The easiest way for me to explain the bug is to actually show you.
Here is the attribute
public enum EBoxGroupCommand
{
Begin,
End
}
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
public class BoxGroupAttribute : PropertyAttribute, IDrawerAttribute
{
public string Name { get; private set; }
public EBoxGroupCommand Command { get; private set; }
public BoxGroupAttribute(EBoxGroupCommand command, string name = "")
{
Command = command;
Name = name;
}
}
Here is the CustomDecoratorDrawer
[CustomPropertyDrawer(typeof(BoxGroupAttribute))]
public class BoxGroupDecoratorDrawer : DecoratorDrawer
{
public override void OnGUI(Rect rect)
{
BoxGroupAttribute boxGroup = (BoxGroupAttribute)attribute;
if (boxGroup.Command == EBoxGroupCommand.Begin)
{
BeginGroup(rect, boxGroup.Name);
}
else
{
EndGroup();
}
}
private void BeginGroup(Rect rect, string label)
{
EditorGUILayout.BeginVertical(GUI.skin.box);
if (!string.IsNullOrEmpty(label))
{
EditorGUI.LabelField(rect, label, EditorStyles.boldLabel);
}
}
private void EndGroup()
{
EditorGUILayout.EndVertical();
}
}
Here is how I wanna use it in a MonoBehaviour
public class MyMonoBehaviour : MonoBehaviour
{
[BoxGroup(EBoxGroupCommand.Begin, "Integers")]
public int int1;
public int int2;
public int int3;
[BoxGroup(EBoxGroupCommand.End)]
public float float1;
public float float2;
}
And the result. It's very weird. The group is somehow shifted down by 1 row. Instead of the 3 integers to be in the group - the first 1 is ouside, and the first float field is inside. Any ideas?
box-group.png
(8.1 kB)
Comment
Your answer
Follow this Question
Related Questions
PropertyDrawer, Change property within callback 2 Answers
PropertyDrawer: Enum to select extended class 0 Answers
Can I use my own input device? 4 Answers
Creating a GUI.Toolbar with Custom GUIStyle 3 Answers
GUI with own mouse 3 Answers