Skip to content
Add this attribute to your class to create buttons in the inspector for selected methods. No need for a custom editor.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets
Images
Packages
ProjectSettings
.gitignore
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
README.md

README.md

Unity MethodButton Attribute

Add this attribute to your class to create buttons in the inspector for selected methods. No need for a custom editor.


Usage:

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    public int ExampleInt;
    public bool ExampleBool;

    internal void ExampleInternalMethod()
    {
        Debug.Log("Invoking: ExampleClass.ExampleInternalMethod");
    }
    public void ExamplePublicMethod()
    {
        Debug.Log("Invoking: ExampleClass.ExamplePublicMethod");
    }
    private void ExamplePrivateMethod()
    {
        Debug.Log("Invoking: ExampleClass.ExamplePrivateMethod");
    }
    protected void ExampleProtectedMethod()
    {
        Debug.Log("Invoking: ExampleClass.ExampleProtectedMethod");
    }


    /* Add these four lines of code to your class.
     * Edit, add/remove, method names to the attribute.
     * Names must match the method name passed into the attribute.
     * 
     * The bool "editorFoldout" is used not only as the property that Unity will use to find the attribute,
     * but also as the bool for the foldout in the editor.
     * 
     * The #if UNITY_EDITOR preprocessor directive is so that this code is not compiled into the finished build.
     * So no need to remvoe it prior to building.
     */

#if UNITY_EDITOR
    [MethodButton("ExampleInternalMethod", "ExamplePublicMethod", "ExamplePrivateMethod", "ExampleProtectedMethod")]
    [SerializeField] private bool editorFoldout;
#endif
}


You can’t perform that action at this time.