A method can be marked as a button. A button appears in the inspector and executes the method if clicked. Works both with instance and static methods.


Doesn’t work on methods that are nested inside serialized structs of classes.

public class NaughtyComponent : MonoBehaviour
    private void MethodOne(int parameter = 0) { } // Works with default parameters

    [Button("Button Text")] // Specify button text
    private void MethodTwo() { }

    [Button(enabledMode: EButtonEnableMode.Editor)]
    private void EnabledInEditorOnly() { }

    [Button(enabledMode: EButtonEnableMode.Playmode)]
    private void EnabledInPlaymodeOnly() { }

    [Button] // When pressed and the target object is a MonoBehaviour, it will start the coroutine
    private IEnumerator SomeCoroutine() { }