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 で保存
なお、インスペクタで直接編集する場合は自動的に保存されるようです。