Summary
Actions can show a natural language summary when collapsed:

Override GetSummary() to return a template to generate this summary.
Example:
[SerializeField] private StringVar _name;
public override string GetSummary() => "Say hello {_name}";
Template Format
The summary template is a string with field names enclosed in {} brackets.
The field name should match the serialized field name exactly.
When building the summary, the field name is replaced with either its value or variable name if it uses a variable.
Other formatting is applied automatically, for example, event icons, tooltips, etc.
Writing Good Summaries
When writing GetSummary() for a custom action:
- Keep it short and readable in the collapsed action list.
- Start with a verb when practical, such as
Get,Set,Move,Rotate,Load,Play, orCheck. - Use sentence-style capitalization rather than title case.
- Keep ordinary words lowercase, for example
time scale,local rotation, orworld point. - Preserve the exact casing of parameter placeholders, because they must match the serialized field name.
- Use
->for outputs and:outputfor optional output fields. - If you use
:hide, make sure the summary still reads naturally when that parameter is hidden. - For
TrueSummaryandFalseSummaryinBaseTrueFalseAction, write clause fragments rather than full sentences, because they are assembled by the base class.
Examples:
public override string GetSummary() => "Get {_camera:hide} world point {_position} -> {_result}";
public override string GetSummary() => "Set {_light} intensity to {_setIntensity}";
protected override string TrueSummary => "{_characterController} is grounded";
Formatters
The parameter can include a formatter: {parameterName:formatter}
| Formatter | Description |
|---|---|
| seconds | Appends second/s to the parameter label. Example: {delay:seconds} becomes "10 seconds" |
| mousebutton | Converts an integer value to mouse button label. Example: {button:mousebutton} becomes "Left" if button is 0. |
| hide | Hides the variable if the value is a common default. Currently only handles Camera.main.Example: {camera:hide} no text if camera is Camera.main. |
| option | Hides a bool variable if set to false (an optional setting). Example: {recursive:option} becomes "Recursive" if true otherwise no text. |
| output | Formats an output variable if assigned, hides it otherwise. Example: {result:output} becomes "-> result" or no text if result is not assigned. |