These tiny scripts add the ability to quickly show a button in the inspector for any method.
Once you have the OpenUPM cli, run the following command:
openupm install com.madsbangh.easybuttons
Or if you don't have it, add the scoped registry to manifest.json with the desired version:
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.madsbangh.easybuttons",
"com.openupm"
]
}
],
"dependencies": {
"com.madsbangh.easybuttons": "1.4.0"
}
Project supports Unity Package Manager. To install the project as a Git package do the following:
- In Unity, open Window -> Package Manager.
- Press the + button, choose "Add package from git URL..."
- Enter "https://github.com/madsbangh/EasyButtons.git#upm" and press Add.
Alternatively, you can add the code directly to the project:
- Clone the repo or download the latest release.
- Add the EasyButtons folder to your Unity project or import the .unitypackage
-
Add the Button attribute to a method.
using EasyButtons; // 1. Import the namespace using UnityEngine; public class ButtonsExample : MonoBehaviour { // 2. Add the Button attribute to any method. [Button] public void SayHello() { Debug.Log("Hello"); } }
-
You should now see a button at the top of the component with the same name as the method:
-
Add the Button attribute to a method with parameters.
using EasyButtons; using UnityEngine; public class Test : MonoBehaviour { [Button] public void ButtonWithParameters(string message, int number) { Debug.Log($"Your message #{number}: '{message}'"); } }
-
You can now enter parameter values and invoke the method in the inspector:
The Button
attribute has different options that allow customizing the button look.
Mode - indicates when the button is enabled. You can choose between the following options:
-
AlwaysEnabled - the button is enabled in edit mode and play mode.
-
EnabledInPlayMode - the button is only enabled in play mode.
-
DisabledInPlayMode - the button is only enabled in edit mode.
Spacing - allows to have some space before or after the button. The following options can be used:
-
None - no spacing at all.
-
Before - adds space above the button.
-
After - adds space below the button.
Expanded - whether to expand the parameters foldout by default. It only works with buttons that have parameters.
If you want to show buttons in a custom editor, you can use the ButtonsDrawer class defined i 6225 n EasyButtons.Editor.
Instantiate ButtonsDrawer in OnEnable if possible, then draw the buttons with help of the DrawButtons method, as in the example:
[CustomEditor(typeof(Example))]
public class CustomEditor : ObjectEditor
{
private ButtonsDrawer _buttonsDrawer;
private void OnEnable()
{
_buttonsDrawer = new ButtonsDrawer(target);
}
public override void OnInspectorGUI()
{
DrawDefaultInspector();
_buttonsDrawer.DrawButtons(targets);
}
}
You can also draw only specific buttons:
// Draw only the button called "Custom Editor Example"
_buttonsDrawers.Buttons.First(button => button.DisplayName == "Custom Editor Example").Draw(targets);
You can search for a specific button using its DisplayName or Method (MethodInfo object the button is attached to.)
- Older versions of Unity might not understand the reference to EasyButtons runtime in the EasyButtons editor assembly definition. If you experience issues, you can re-add the reference, or remove the asmdefs completely.