UnityのHierarchyのCreateに項目を追加する

ヒエラルキーのCreateボタンや、GameObjectを右クリックしたときに出る子供を作成する項目は実は自由に追加できます。

creategomenu1 creategomenu2

これらに好きな項目を追加します。

追加方法

追加にはEditorのMenuItemを利用します。

MenuItemはその名前の通りUnityのメニューバーのところに好きな項目を追加できる機能です。

unitymenuitem

メニューバーはこのFile等が並んでいるところです。

MenuItemの追加

追加するにはまずEditorフォルダが必要です。

というのもMenuItem等のUnityエディターをカスタマイズする機能は最終的なアプリに含めることが出来ません。

そのためUnityではEditorフォルダ内にそういうカスタマイズする機能を入れて最終的なアプリには含まないというルールがあります。

menuitemsample

Editorフォルダを用意して、その中にソースを追加しました。

このMenuItemSampleはエディターでのみ有効になります。

 

ではまず試しにMenuItemを使ってみます。

using UnityEngine;
using UnityEditor;

public class MenuItemSample
{
    [MenuItem("Sample/MenuItem")]
    public static void SampelMenuItem()
    {
        Debug.Log( "SampleMenuItem" );
    }
}

samplemenu

メニューが増えました。

選択すると、上記関数が実行され「SampleMenuItem」がConsoleに表示されます。

※注意点として一番上位の項目に日本語は使えないようで、表示がおかしくなります。とりあえず日本語のメニュー名は避けた方が無難です。

Createに項目を追加する

さてMenuItemの使い方は簡単に分かったもののこれでどうやってCreateに項目を追加するかといいますと、MenuItemのメニュー名を「”GameObject/メニュー名”」とするだけです。

using UnityEngine;
using UnityEditor;

public class MenuItemSample
{
    [MenuItem("GameObject/MenuItem", priority = 21)]
    public static void GameObjectMenuItem()
    {
        Debug.Log( "GameObjectMenuItem" );
    }
}

addgameobjectmenuitem

先ほどと同様にGameObjectの中にメニューが増えました。

今回はpriorityというキーワードが増えています。

MenuItemのprioiry

MenuItemではprioriyを指定する事でメニュー内での順番をある程度変更することが出来ます。

大きな数字ほど下に、小さな数字ほど上に表示されます。

GameObjectメニュ―内では、Cameraと横線の間に入れるには上記のprioiryが21出なければなりません。

 

結局Createに項目追加するには?

さて、この辺まで書くと気づく人もいると思いますが、ヒエラルキーのCreateに表示される項目はこのGameObjectメニューの最初の横線(Cameraの下の)より上にある項目が表示されます。

なので、実は既にこの状態でCreateを見てみると項目が増えています。addcreatemenuitem

同様に[MenuItem(“GameObject/UI/メニュー名”)]などとするとUIの>のところに好きな項目を追加できます。

既にあるメニューのサブメニューを追加する場合にはprioriyの指定は必須ではありません。(サブメニュー内での順番を変更したいなら必要)

まとめ

Createに項目を追加するにはMenuItemに「“GameObject/任意のメニュー名”」とpriority21以下を指定するだけです。

例外として既存の(サブメニューを持った)メニューのサブメニューとして追加する場合は、priorityの指定はなくても良いというわけですね。

お手軽なので自分好みにいろいろ試してみると良いと思います。

タイトルとURLをコピーしました