Unityにおいて、ScriptableObjectを使用したシーン間でデータを受け渡す方法

結論

前提として、Don’tDestroyObjectに設定したゲームが起動している限り消えないオブジェクトに、データを変更する予定があるScriptableObjectから生成したPrefabファイルの参照を保持させる必要がある。その状態で、Prefabから取得した値を変更すればそれが反映される。

変更はゲームを終了すると消えてしまうので、Saveデータとして別に保存しておく必要がある。

参考にした記事

【Unity】とりあえずScriptableObjectを知っておこう

【Unity】今更ScriptableObject入門

【Unity】Editor拡張でScriptableObjectを保存するには

ScriptableObjectファイル挙動確認

なんで参照を維持しておかないと変更したデータが消えるのかは不明。

多分、「EditorUtility.SetDirty」とか「EditorSceneManager.MarkSceneDirty」とか「AssetDatabase.SaveAssets」がキーワードになってそう。

※EditorUtilityはプレイモードでしか使用できないクラス。

Unity

Posted by admin