概要
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");