sound sepher's PASTIME

ゲーム開発で思ったことや、趣味などの話を書き綴っていきます。

【Unity】EasySaveについて

検証結果

サポート外の型のEasySave対応方法

  • Window → Easy Save 3 → Types で型を検索して登録
    • 保存するフィールドとプロパティも選択可

参照と直接保存どちらでも設定可

  • Settings → Advanced Settings → Serialise Unity Object fields の設定を変更
    • By Ref で参照ID保存
    • By Value で直接データ保存
      • ただし By Value は丸ごと保存するのでサイズが超大になる
      • めんどくさがらずに By Ref にしておくのが安パイ

参照保存時の挙動

  • この場合は new を使わず参照渡しで繋げたデータ、という意味
List<ScriptableObject>を直接保存
  • 参照登録済の ScriptableObject のフィールドが保存される
  • 「リストに何が参照されているか」は保存されない
List<ScriptableObject>がフィールドとして登録してあるクラスを保存
  • 「リストに何が参照されているか」が保存される
  • 参照登録済みの ScriptableObject のパラメータは保存されない

セーブ・ロード方法

セーブ
  • ES3.Save("キー", 保存したいデータ, "ファイル名")
ロード
  • ES3.Load("キー", "ファイル名")

保存しやすい構造(案)

  1. シングルトンでデータベースを作って親DBに List<ScriptableObject> を並べる
    • 実際は List<Skill> とか List<Item> とかそんな感じ
    • ↑の場合は Skill と Item が ScriptableObject を継承したクラス(アセット)
  2. 親DBクラスをセーブ
    • リストに何が登録されているか(参照)を保存
  3. リストをひとつずつセーブ
    • リストデータのフィールドを保存
  4. もし非サポートの型を使ってるなら型(クラス)を Type で検索して登録

参考

docs.moodkie.com

kan-kikuchi.hatenablog.com