Unityを再起動するとScriptableObjectの中身が消える問題

unity

ScriptableObjectに値を保存する方法は2つあります。

  1. インスペクタから手動で保存する方法
  2. スクリプトから保存する方法

1の場合には問題は起きませんが、2の場合Unityを再起動すると値が消えてしまう問題に直面しました。

原因は.assetファイルに保存が反映されていないこと。

解決するには保存するスクリプトに以下のコードを追記する必要があります。

//using UnityEditor が必要。
//変更があった事を記録する
EditorUtility.SetDirty(gameData);

//保存する
AssetDatabase.SaveAssets();

参考:https://kan-kikuchi.hatenablog.com/entry/ScriptableObject_SetDirty_SaveAssets

おわり。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog