Unity
Unity拡張
UnityEditor

【UnityEditor】ScriptableObjectのアセットを右クリックから作れるようにするエディター拡張

環境

Unity2017.2.0f3
Windows 10

はじめに

ScriptableObjectのアセットを右クリックから作れるようにするエディター拡張を作ってみました。

1.gif

ソースコード

以下のスクリプトをEditorフォルダ以下に入れてください

CreateScriptableObjectMenu.cs
namespace CreateScriptableObjectMenu
{
    using UnityEngine;
    using UnityEditor;

    /// <summary>
    /// 右クリックメニューからScriptableObjectを作成するエディター拡張
    /// </summary>
    public static class CreateScriptableObjectMenu
    {
        const string MENU_TEXT = "Assets/Create/ScriptableObject";

        [MenuItem(MENU_TEXT, false, 0)]
        static void CreateAsset()
        {
            var script = Selection.activeObject as MonoScript;
            string path = AssetDatabase.GetAssetPath(script);
            Create(script.GetClass(), path.Substring(0, path.Length - 3) + ".asset");
        }

        static void Create(System.Type type, string path)
        {
            ProjectWindowUtil.CreateAsset(ScriptableObject.CreateInstance(type), path);
        }

        [MenuItem(MENU_TEXT, true)]
        static bool ValidateCreateAsset()
        {
            var script = Selection.activeObject as MonoScript;
            if (script == null) { return false; }

            // 選択しているスクリプトがScriptableObjectかどうか
            return script.GetClass().IsSubclassOf(typeof(ScriptableObject));
        }
    }
}

使い方

ScriptableObjectのスクリプトを右クリックして Create/ScriptableObjectを選択するとアセットが作成されます。

おまけ

ScriptableObjectクラス以外をクリックした場合はメニュー選択できないようになっています。
2.png