ScriptableObjectに値を保存する方法は2つあります。
- インスペクタから手動で保存する方法
- スクリプトから保存する方法
1の場合には問題は起きませんが、2の場合Unityを再起動すると値が消えてしまう問題に直面しました。
原因は.assetファイルに保存が反映されていないこと。
解決するには保存するスクリプトに以下のコードを追記する必要があります。
//using UnityEditor が必要。 //変更があった事を記録する EditorUtility.SetDirty(gameData); //保存する AssetDatabase.SaveAssets();
参考:https://kan-kikuchi.hatenablog.com/entry/ScriptableObject_SetDirty_SaveAssets
おわり。