Plugin can sort and group properties, either for the Object property at the top level or for the Nest property set with [ToolkitDrawer] (Refer to Setup section).
Sort
Use [PropertyOrder] to sort
Example
public int Value1; [PropertyOrder(-1)] public int Value2; [PropertyOrder(10)] public int Value3; public int Value4;
| Property | Default order | Actual Order |
| Value1 | 1 | 1 |
| Value2 | 2 | -1 |
| Value3 | 3 | 10 |
| Value4 | 4 | 4 |
Actual display

You can use [ShowPropertyOrder] to display actual order for debug
Grouping
Attributes can be grouped using [BoxGroup], [FoldoutGroup], [TitleGroup], and grouping supports hierarchical
Example
[BoxGroup("Group1")]
public int Value1;
[BoxGroup("Group1")]
public int Value2;
[FoldoutGroup("Group2", ScopeType = GroupScopeType.ScopeBegin)]
public float Value3;
public float Value3_2;
[TitleGroup("Group2/Panel")]
public float Value4;
public float Value4_2;
[FoldoutGroup("Group2", ScopeType = GroupScopeType.ScopeEnd)]
public float Value5;
[BoxGroup("Group1")]
public int Value2_1;
public int Value101;
Group info
| Group | Property |
| Group1 | Value1 |
|
| Value2 |
|
| Value2_1 |
| Group2 | Value3 |
|
| Value3_2 |
| Group2/Panel | Value4 |
| Group2 | Value4_2 |
| Group2 | Value5 |
| [Root] | Value101 |
Actual display

Explain
- Properties all have belonging a group, if there is no [XXXGroup], it belongs to [Root]
- Group can set up a parent group through the path(similar to g1/g2/g3).
- The Group determines the scope of action via scopeType, which defaults to Single. Just the current property that are applied
- ScopeBegin: indicates that a range is applied, and subsequent properties are considered within the scope if there is no [XXXGroup]. Automatically assign to Group
- ScopeEnd: indicates that a range is end Group's order was determined by the PropertyOrder of the first Property
