Custom commands
The [Command]
attribute turns any method or property into a command, and will become available for execution in the command field upon recompilation.
How to create a command
- Static example
- Non-static example
using UnityEngine;
using Ghostlike.Commands;
public static class NumberCommands
{
[Command]
public static int RandomNumber(int from, int to)
{
return Random.Range(from, to);
}
}
The method can be executed immediately by typing: randomnumber 0 10
in the command field.
using UnityEngine;
using Ghostlike.Commands;
public class Player : MonoBehaviour
{
[SerializeField] private float maxHealth;
private float currentHealth;
[Command]
public int Heal(int amount)
{
currentHealth += amount;
currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth);
}
}
Contrary to static methods, a non-static method requires an instance in order to be invoked.
Instances are found automatically with Object.FindObjectsByType
. This means there is no additional setup
required on your part.
Executing the command like this: heal 10
will heal all instances of Player
found in the scene.
A name can be specified in order to execute the command only on instances with the specified name. It can be specified at
the end of the input, prefixed with @
. Like so: heal 10 @MyPlayer
.