2017-04-03 3 views
0

フォルダからすべてのアセットを読み込み、フォルダ内のすべてのファイルを含む列挙型のファイルを作成するメソッドがあります。
インスペクタでボタンを押して実行するにはどうすればよいですか?私が見ているすべてのカスタムエディタチュートリアルでは、カスタムエディタを編集しなければならないクラスに接続しなければならないことが示されています。インスペクタビューボタンで呼び出されるカスタムエディタメソッド

public class EnumGeneratorTool : Editor 
{ 
    [SerializeField] 
    string sourcePath; 

    [SerializeField] 
    string outputPath; 

    public override void OnInspectorGUI() 
    { 
     DrawDefaultInspector(); 

     if (GUILayout.Button("Do Thing")) 
     { 
      // I want thnis to happen when Do Thing button is pressed 
      Debug.Log("Do the thing: " + sourcePath); 
     } 
    } 
} 

答えて

0

メニューを作成すると、スクリプトを保持するために余分なゲームオブジェクトは必要ありません。ここにコードがあります。

public class CustomMenu {

// Add a menu item named "Do Something" to MyMenu in the menu bar. 
[MenuItem("MyMenu/Do Something")] 
static void DoSomething() 
{ 
    Debug.Log("Doing Something..."); 
} 

}

それは正しくコンパイルする場合は、メニューバーのカスタムメニューが表示されるはずです。 enter image description here

EDIT: Monobehaviour成分はゲームオブジェクトに取り付けられます。 public class Parser : MonoBehaviour {

public string path = ""; 

public void DoSomething() 
{ 
    Debug.Log("Doing Something with path."); 
} 

}

Editorクラスです。 (正しく動作するには "Editor"フォルダ内にある必要があります)。 using UnityEditor;

[CustomEditor(typeof(Parser))] public class ParserEditor : Editor{

public override void OnInspectorGUI() 
{ 
    Parser myTarget = (Parser)target; 

    DrawDefaultInspector(); 

    if (GUILayout.Button("Do Thing")) 
    { 
     // I want thnis to happen when Do Thing button is pressed 
     Debug.Log("Do the thing: " + myTarget.path); 
    } 
} 

}

+0

「UnityEditorを使用する」を必ず追加してください。頂点で。 – TheNitram

+0

ありがとう!しかし、私はインスペクタで公開したいsom引数を持っています。だから私はそれをGameObjectに添付しておきたい。それは可能ですか? – Lautaro

+0

はいできます。あなたは、 "エディタ"フォルダの中にあるべきエディタクラス(あなたがボタンを作成する場所)と、一意的なクラス(文字列変数が公開されている)が必要です。シーン内の任意のゲームオブジェクトにモノオブジェクトクラスをアタッチし、エディタクラスで作成したボタンが表示されるはずです。更新された回答をご覧ください。 – TheNitram

関連する問題