KITASENJU DESIGN BLOG

memo, html, javascript, unity

インスペクターにボタンを作る

how to make a button on inspector

https://kan-kikuchi.hatenablog.com/entry/CustomEditor_Button

ExampleScript.cs

using UnityEngine;

[ExecuteInEditMode] //エディター再生してない時、動くように? 場合によって使う
public class ExampleScript : MonoBehaviour {

  //表示したログ、SerializeFieldを付ける事でInspectorに表示されるように
  [SerializeField]
  private string _log = "";

  /// <summary>
  /// _logを"ぷらいべーと!"に変更してConsoleに表示
  /// </summary>
  private void PrivateMethod(){
    _log = "ぷらいべーと!";
    Debug.Log(_log);
  }

}

ExampleScriptEditor.cs

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(ExampleScript))]//拡張するクラスを指定
public class ExampleScriptEditor : Editor {

  /// <summary>
  /// InspectorのGUIを更新
  /// </summary>
  public override void OnInspectorGUI(){
    //元のInspector部分を表示
    base.OnInspectorGUI ();

    //targetを変換して対象を取得
    ExampleScript exampleScript = target as ExampleScript;

    //PrivateMethodを実行する用のボタン
    if (GUILayout.Button("PrivateMethod")){
      //SendMessageを使って実行
      exampleScript.SendMessage ("PrivateMethod", null, SendMessageOptions.DontRequireReceiver);
    }

  }

}  
"FOOTER"