メソッドを簡単にインスペクタから呼び出せるエディタ拡張「EasyButtons」を利用する

Easy Buttons

リポジトリはこちら.MIT ライセンス.

github.com

How To Install

  • OpenUPM
openupm add com.madsbangh.easybuttons
  • git URL
madsbangh/EasyButtons.git#upm

f:id:xrdnk:20210731144441p:plain

How To Use

ハロワを出すサンプルスクリプトです.

using UnityEngine;
// ① 名前空間のインポート
// asmdef を作成している場合は,EasyButtons.asmdef を 参照するように設定するのを忘れずに
using EasyButtons;

namespace Denity.Experimental
{
    public class EasyButtonsExample : MonoBehaviour
    {
        // ② Button Attribute を追加する
        [Button]
        private void SayHelloWorld()
        {
            Debug.Log("Hello World!");
        }
    }
}

f:id:xrdnk:20210731144950p:plain

このように,EasyButtons.ButtonAttribute を利用するとインスペクタ側で簡単にメソッドを実行することが出来ます.

他にも ButtonAttribute には以下のオプションが付いています.

using UnityEngine;
// ① 名前空間のインポート
// asmdef を作成している場合は,EasyButtons.asmdef を 参照するように設定するのを忘れずに
using EasyButtons;

namespace Denity.Experimental
{
    public class EasyButtonsExample : MonoBehaviour
    {
        // ② Button Attribute を追加する
        [Button]
        private void SayHelloWorld()
        {
            Debug.Log("Hello World!");
        }

        // Edit Mode で活性になる.Play Mode で不活性になる.
        [Button(Mode = ButtonMode.DisabledInPlayMode)]
        protected void SayHelloEditor()
        {
            Debug.Log("Hello from edit mode");
        }

        // Edit Mode で活性になる.Play Mode 中で活性になる.
        [Button(Mode = ButtonMode.EnabledInPlayMode)]
        private void SayHelloWorldInRuntime()
        {
            Debug.Log("Hello World from play mode");
        }

        // ボタンの表示テキストをメソッド名ではなくカスタムに設定する
        // 自分の上のボタンとの間にスペースを作る
        [Button("上に隙間があるボタン", Spacing = ButtonSpacing.Before)]
        private void TestButtonName()
        {
            Debug.Log("Hello from special name button");
        }

        // ボタンの表示テキストをメソッド名ではなくカスタムに設定する
        // 自分の上のボタンだけでなく,自分の下にあるボタンの間にスペースを作る
        [Button("上下に隙間があるボタン", Spacing = ButtonSpacing.Before | ButtonSpacing.After)]
        private void TestButtonSpaceBoth() {
            Debug.Log("Hello from a button surround by spaces");
        }

        // パラメタ付きのボタン
        [Button("パラメタ付きのボタン")]
        private void ButtonWithParams(string message, int number)
        {
            Debug.Log($"Your message #{number}: \"{message}\"");
        }

        // Expanded = true にすることで,デフォルトでパラメタ入力欄が開かれた状態にする
        [Button("開かれたパラメタ付きのボタン", Expanded = true)]
        private void ExpandedButtonWithParams(string message)
        {
            Debug.Log(message);
        }
    }
}

f:id:xrdnk:20210731150237p:plain

上から Edit Mode で叩いてみると以下のようになります.

gyazo.com

開発のデバッグや効率化に利用できると思います.