Unity の Inspector ビューにボタンを表示して
指定された関数を実行できるようにする PropertyDrawer を作成しました
上記の ButtonAttribute.cs を Unity プロジェクトに追加して
下記のようなスクリプトを書くことで
Inspector に指定された関数を実行するボタンを表示できるようになります
using UnityEngine; /// <summary> /// ポケモンを管理するクラス /// </summary> public sealed class Pokemon : MonoBehaviour { [Button( "Init", "リセット" )] public int ResetButton1; [Button( "Reset", "ピカチュウ", "ピカチュウ", 0.4f, 6 )] public int ResetButton2; [Button( "Reset", "ミュウツー", "ミュウツー", 1.5f, 33 )] public int ResetButton3; public string Name; // 名前 public float Height; // 高さ public float Weight; // 重さ /// <summary> /// パラメータを初期化する時に呼び出されます /// </summary> private void Init() { Reset( "", 0, 0 ); } /// <summary> /// パラメータを設定する時に呼び出されます /// </summary> private void Reset( string name, float height, float weight ) { Name = name; Height = height; Weight = weight; } }
[Button( "Init", "リセット" )] public int ResetButton1;
このように記述すると「リセット」と書かれたボタンを Inspector に表示して
ボタンが押されたら Init 関数を実行できるようになります
[Button( "Reset", "ピカチュウ", "ピカチュウ", 0.4f, 6 )] public int ResetButton2;
このように記述すると「ピカチュウ」と書かれたボタンを Inspector に表示して
ボタンが押されたら「"ピカチュウ", 0.4f, 6」を引数に渡して
Reset 関数を実行できるようになります
Button 属性が適用された変数(ResetButton1やResetButton2)は
Inspector 上で編集できなくなるのでそこだけ注意が必要です