5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

環境

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

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?