はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】エディタ拡張 実行できないメニューを作成する

はじめに

MenuItemを用いることでUnityEditor画面の上の方にFileとかEditとかAssetsなどが並んでいるメニューに新しいメニューを追加することができます。
ただ実行されたくないメニューを実行できないようにする機能があるので紹介したいと思います。

本題

http://anchan828.github.io/editor-manual/web/part1-menuitem.html
こちらを参考にさせてもらいながら書いていきたいと思います。
新しいメニューを追加しようと思ったときにMenuItemを使うのですが、

 [MenuItem("Window/SampleEditor")]

このように表記するとできました。

実はこのMenuItemには第2引数が存在して、これをtrueとfalseにしてみました。

using UnityEngine;
using UnityEditor;

public class SampleEditor : EditorWindow
{
    [MenuItem("Window/SampleEditor/child1",true)]
    static void Hoge1()
    {

    }
    [MenuItem("Window/SampleEditor/child2", false)]
    static void Hoge2()
    {

    }
}

f:id:hanaaaaaachiru:20181007193621j:plain

こんな感じに第2引数をtrueにすると表示されないようになりました。
これをうまく利用すると、

using UnityEngine;
using UnityEditor;

public class SampleEditor : EditorWindow
{
    [MenuItem("Window/SampleEditor/child1")]
    static void Hoge1()
    {

    }
    [MenuItem("Window/SampleEditor/child1",true)]
    static bool ValidateHoge1()
    {
        return false;
    }

    [MenuItem("Window/SampleEditor/child2", false)]
    static void Hoge2()
    {

    }
}

f:id:hanaaaaaachiru:20181007194116j:plain

こんな感じに見えるけれど押せないメニューを作成することができました。

さいごに

これをうまく利用すればきっとなにかに役に立つと思います。