Skip to main content

Suggestions

When typing in the command field, a list will appear with suggestions based on your input. These work both for the name of the command you type at the start, as well as the parameters for the command, if supported.

Custom suggestion attributes

Most parameter types such as enum, bool, Color and derivatives from UnityEngine.Object already comes with suggestions. However, it's also possible to define your own custom suggestions that you can specify on individual parameters.

To define your own suggestions, make a new class that inherits from SuggestionAttribute:

public class PositionAttribute : SuggestionAttribute
{
public override IEnumerable<string> Get()
{
string[] positions = { "(0,0,0)", "(20,10,20)", "(5,100,5)" };
return positions;
}
}

Then to see the suggestions on a parameter, put the attribute on the parameter in the method.

public class Player : MonoBehaviour
{
[Command]
public void Teleport([Position] Vector3 position)
{
transform.position = position;
}
}

Built-in suggestion attributes

  • [SceneName] - List of all scenes.
  • [CommandName] - List of all loaded commands.

Custom suggestor methods

To define suggestions based on an entire type (or derived types), the [Suggestor] attribute can be placed on a static method that returns string[], and takes a single CommandInfo.Parameter parameter.

[Suggestor(typeof(Vector3))]
public static string[] VectorSuggestor(CommandInfo.Parameter parameter)
{
return new string[]
{
"(0, 0, 0)",
"(1, 1, 1)",
"(1, 0, 0)",
"(0, 1, 0)",
"(0, 0, 1)"
}
}

Now whenever the user reaches a Vector3 parameter, these suggestions will be shown in the suggestion list.

note

The reason the method takes a CommandInfo.Parameter, is to get more information about the current parameter we are making suggestions for, if needed. Though in most cases, returning a simple string array should be sufficient.

Custom icons

Suggestion icons can be customized with custom textures and colors. Read more about that in the customization section.