夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Unity Editor拡張でオリジナルのメニューを追加する。

本日はUnity調査枠です。

UnityではEditorを拡張することでUnityエディタ上で使用できる様々なツールを作ることができます。

例えばHoloLensのアプリ開発で用いるMRTKをプロジェクトに導入した場合上部のワールドタブに[MixedRealityToolkit]のメニューが追加されます。

f:id:Holomoto-Sumire:20210520204339j:plain

これもEditor拡張を用いて実装されています。

今回はこのようにオリジナルのメニューを追加します。

〇ワールドタブにオリジナルのメニューを追加する。

①[Project]ウィンドウの[Assets]内のどこかに[Editor]という名前のフォルダを作成します。

f:id:Holomoto-Sumire:20210520204713j:plain

[Editor]という名前のフォルダはUnity内で特別な用途で使用されるフォルダになります。

Editor拡張で使用するスクリプトはこのフォルダ内に配置します。しかし、これはビルド時にコンパイルされることはありません。

docs.unity3d.com

②[Editor]フォルダ内に次のscriptを作成します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class GameControlEditor : Editor
{
    
    
}

このクラスはEditorの継承クラスになります。

スクリプトに関数を記述します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class GameControlEditor : Editor
{
    [MenuItem("GameControlMenu/GameSet")]
    static void GameControlMenu()
    {
        
    }
    
}

この [MenuItem("GameControlMenu/GameSet")]の属性を付けることによってUnityの上部ワールドタブにメニューが追加されます。

f:id:Holomoto-Sumire:20210520210008j:plain

④次にGameControlMenu()内にメニューを選択した際の処理を記述します。

今回はMRTKのscene設定を行うようにシーン内にオブジェクトを配置します。

    [MenuItem("GameControlMenu/GameSet")]
    static void GameControlMenu()
    {
        var _cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

        Debug.Log("Set");
    }

f:id:Holomoto-Sumire:20210520210533j:plain

f:id:Holomoto-Sumire:20210520210601j:plain

ボタンを押すことでシーンにキューブが配置され、コンソールウィンドウにSetのメッセージが現れました。

初歩的ですがEditor拡張でオリジナルのメニューを作成することができました。