ダリアメモ@ブログ

日々思ったことや自分用のメモも含めプログラムの技術を淡々と書いていきます

Hierarchyのコンテキストメニューから自作のゲームオブジェクトを生成する方法

やりたいこと

こんな感じに自作のゲームオブジェクトをHierarchyのコンテキストメニューから生成できるように作りたかったのでそれについてまとめます。 f:id:daria_sieben:20190817171459p:plain

環境はUnity2018.4.4f1です

実装

必要な処理はMenuItemです。

 [MenuItem("GameObject/TestGameObject", false, 0)]

・第1引数はHierarchyのコンテキストメニューに表示したいので「GameObject/」にし、表示したい名前をその後ろに入れます。
・第2引数は押せないようにチェックを入れるかのフラグですが、常に選択できるようにしたいのでtrueにします。
・第3引数は表示したい場所を指定します。0が一番上になり、Create Emptyが一番前に来るのでそれに下になります。 今回はわかりやすく一番上にします。

今回は生成するのが目的のため、他の処理はUndoだけできるようにしておけば元に戻せるのでそうします。

public class TestGameObjectMenuItem
{
    [MenuItem("GameObject/TestGameObject", false, 0)]
    public static void CreateGameObject()
    {
        var go = new GameObject("TestGameObject");
       //作成したゲームオブジェクトを選択状態にする
        Selection.activeObject = go;
       //Undoに登録
        Undo.RegisterCreatedObjectUndo(go,"TestGameObject");
    }
}

これでベースが出来上がったので、後は特定のコンポーネントをAddComponentしたり、選択しているオブジェクトと組み合わせて親子構造を作ったり自由にカスタマイズしてみてください。

参考

answers.unity.com

anchan828.github.io