概要

ScriptableObjectを継承した自作クラスのScriptableObjectファイルをUnityEditor上から作成する

 

サンプル

1. ScriptableObjectを継承したクラスを作成する

class HogeObject : ScriptableObject
{
    [SerializeField]
    private int m_hoge = 0;
    public int Hoge { get { return m_hoge; } }
}

2. ScripttableObjectをUnityEditorのメニューから作成できるようにする

class HogeObject : ScriptableObject
{
    ・・・省略・・・

#if UNITY_EDITOR
    // ScriptableObject生成
    [UnityEditor.MenuItem("MyScriptableObject/Create/Hoge")]
    static void Create()
    {
        string fileName = UnityEditor.AssetDatabase.GenerateUniqueAssetPath("Assets/Resources/ScriptableObjects/" + typeof(HogeObject) + ".asset");
        UnityEditor.AssetDatabase.CreateAsset(ScriptableObject.CreateInstance<HogeObject>(), fileName);
        UnityEditor.AssetDatabase.SaveAssets();
        UnityEditor.AssetDatabase.Refresh();
    }
#endif
}

3. Unity上部のメニューに「MyScriptableObject > Create > Hoge」というメニュー及びメニュー項目が追加されるので、
 メニューをクリックする。
 クリック後、「Assets/Resources/ScriptableObjects」フォルダに「HogeObject.assets」がファイルが作成される

 

4. 作成したScriptableObjectファイルをリソースから読み込んでみる
 ※下記のサンプルでは、Resources/ScriptableObjects 配下に「HogeObject.assets」ファイルが配置されていること

var hogeObjct = Resources.Load<Settings>("ScriptableObjects/HogeObject");