[unity] Scriptable Object が保存されない

Scriptable Object をスクリプトで編集(内容の追加、変更)すると、Unity Editor 起動時は問題ないのですが、再起動した時に全てのデータが消えてしまいます。

起動中は Unity Editor のメモリを参照しており、ファイルに保存されていないためのようです。

これじゃさすがに使い道がありませんので、きちんとファイルに保存されるようにします。
次のコードを空の GameObject にアタッチし、プレイするとファイルに保存されます。

using UnityEditor;
using UnityEngine;

public class Sample : MonoBehaviour
{
    [SerializeField]
    ScriptableObject Table;

    void Start()
    {
        EditorUtility.SetDirty(Table);
        AssetDatabase.SaveAssets();
    }
}

SetDirty で「ファイル保存の必要がある」事を通知、SaveAssets で保存

なお、インスペクタで直接編集する場合は自動的に保存されるようです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA