Version 2.1.0.0

OdinGroupDrawer<TGroupAttribute> class

Namespace: Sirenix.OdinInspector.Editor
Assembly: Sirenix.OdinInspector.Editor
public abstract class OdinGroupDrawer<TGroupAttribute> : OdinDrawer where TGroupAttribute : PropertyGroupAttribute

Base class for all group drawers. Use this class to create your own custom group drawers. OdinGroupDrawer are used to group multiple properties together using an attribute.

Note that all box group attributes needs to inherit from the PropertyGroupAttribute

Remember to provide your custom drawer with an Sirenix.OdinInspector.Editor.OdinDrawerAttribute in order for it to be located by the Sirenix.OdinInspector.Editor.DrawerLocator.

Inheritance
  • System.Object
  • OdinDrawer
  • OdinGroupDrawer<TGroupAttribute>
Remarks

Checkout the manual for more information.

Example
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MyBoxGroupAttribute : PropertyGroupAttribute
{
    public MyBoxGroupAttribute(string group, int order = 0) : base(group, order)
    {
    }
}

// Remember to wrap your custom group drawer within a #if UNITY_EDITOR condition, or locate the file inside an Editor folder.

public class BoxGroupAttributeDrawer : OdinGroupDrawer<MyBoxGroupAttribute>
{
    protected override void DrawPropertyGroupLayout(InspectorProperty property, MyBoxGroupAttribute attribute, GUIContent label)
    {
        GUILayout.BeginVertical("box");
        for (int i = 0; i < property.Children.Count; i++)
        {
            InspectorUtilities.DrawProperty(property.Children[i]);
        }
        GUILayout.EndVertical();
    }
}

// Usage:
public class MyComponent : MonoBehaviour
{
    [MyBoxGroup("MyGroup")]
    public int A;

    [MyBoxGroup("MyGroup")]
    public int B;

    [MyBoxGroup("MyGroup")]
    public int C;
}
See Also

Type Parameters

TGroupAttribute

Constructors

OdinGroupDrawer()
protected OdinGroupDrawer()

Properties

Attribute
public TGroupAttribute Attribute { get; }

Methods

CanDrawGroup(InspectorProperty)
protected virtual bool CanDrawGroup(InspectorProperty property)
Parameters
InspectorProperty property

Returns
System.Boolean

CanDrawProperty(InspectorProperty)
public override sealed bool CanDrawProperty(InspectorProperty property)
Parameters
InspectorProperty property

Returns
System.Boolean

DrawPropertyLayout(GUIContent)
Draws the property with GUILayout support.
protected override void DrawPropertyLayout(GUIContent label)
Parameters
UnityEngine.GUIContent label

The label. This can be null, so make sure your drawer supports that.

Extension Methods

This website is brand new and built with the Odin 2.1 beta in mind. This means you might discover some features such as attribute expressions that are only available in the beta.

You can download the 2.1 beta from here and read the patch-notes here.