Skip to content

Summary

Actions can show a natural language summary when collapsed:

ActionSummaries

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, or Check.
  • Use sentence-style capitalization rather than title case.
  • Keep ordinary words lowercase, for example time scale, local rotation, or world point.
  • Preserve the exact casing of parameter placeholders, because they must match the serialized field name.
  • Use -> for outputs and :output for optional output fields.
  • If you use :hide, make sure the summary still reads naturally when that parameter is hidden.
  • For TrueSummary and FalseSummary in BaseTrueFalseAction, 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.