【Unity】「Easy Save」で自作クラスをセーブ、ロードする

スポンサーリンク

はじめに

「Easy Save」では自分で作成したクラスをそのままセーブ、ロードすることができます。
「Easy Save」に関する他の記事は下記のリンクになります。

【Unity】「Easy Save」の基本的な使い方
http://yayaolab.com/archives/982

【Unity】「Easy Save」の基本的な使い方 その2
http://yayaolab.com/archives/1192

【Unity】「Easy Save」の高速なセーブとロードの方法
http://yayaolab.com/archives/1306

Easy Saveで自作クラスをセーブ、ロードする

今回は下記の「MyCustomData」クラスを登録します。


public class MyCustomData
{
public string Name;
public string Description;
public int Attribute;
public bool IsReal;
}

自作クラスをTypeとして登録する

まずは自作クラスを「Easy Save」にTypeとして追加します。
手順は下記の通りです。

1.メニューの「Asset」にある「Easy Save 2」->「Manage Types」をクリックします。

2.ダイアログが開くので、検索ボックスに追加したいクラス名を入力して検索します。

3.ダイアログの右側にクラスの構成が表示されるので、セーブ・ロードしたい項目にチェックを入れて「Add Type」ボタンをクリックします。

以上で自作クラスがTypeとして登録されます。
正常に完了していると、「Assets/Easy Save 2/Types」フォルダに下記のクラスが追加されています。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ES2UserType_MyCustomData : ES2Type
{
public override void Write(object obj, ES2Writer writer)
{
MyCustomData data = (MyCustomData)obj;
// Add your writer.Write calls here.
writer.Write(data.Name);
writer.Write(data.Description);
writer.Write(data.Attribute);
writer.Write(data.IsReal);
}
public override object Read(ES2Reader reader)
{
MyCustomData data = new MyCustomData();
Read(reader, data);
return data;
}
public override void Read(ES2Reader reader, object c)
{
MyCustomData data = (MyCustomData)c;
// Add your reader.Read calls here to read the data into the object.
data.Name = reader.Read();
data.Description = reader.Read();
data.Attribute = reader.Read();
data.IsReal = reader.Read();
}
/* ! Don't modify anything below this line ! */
public ES2UserType_MyCustomData():base(typeof(MyCustomData)){}
}

1回追加したクラスを更新した場合は上記のダイアログで「Update Type」ボタンをクリックすれば更新されます。

自作クラスのセーブ・ロード

自作クラスのセーブとロードは他のタイプと同じ方法でできます。


MyCustomData saveData = new MyCustomData();
// 自作クラスのセーブ方法
using (ES2Writer writer = ES2Writer.Create("myFile.txt"))
{
writer.Write(saveData, "data");
writer.Save();
}
// 自作クラスのロード方法
using (ES2Reader reader = ES2Reader.Create("myFile.txt"))
{
MyCustomData loadData = reader.Read("data");
}

まとめ

これでだいぶ「Easy Save」について詳しくなりました。あとはcsvファイルとイメージファイルのセーブ・ロードについて勉強すれば一通りOKかなと思っています。

参考サイト

Adding Support for Other Types – Moodkie Docs
http://docs.moodkie.com/easy-save-2/guides/adding-support-for-other-types/

検証環境

Windows 10 Pro
Unity 2017.2.0f3
Easy Save 2.8.4

コメント

  1. KUMA GAMES より:

    参考になる記事をありがとうございます
    セーブデータがあるかないかの判断はどのように行うのでしょうか?

    • ややおラボ より:

      コメントありがとうございます。
      上記の自作クラスのロード時に判断する場合は下記のようになると思います。

      ファイルの有無判定は「ES2.Exists(“myFile.txt”)」
      タグの有無判定は「reader.TagExists(“data”)」

      よろしくお願いいたします。

      • KUMA GAMES より:

        ありがとうございます
        無事セーブ機能を実装できました

        PlayerPrefsだとバックアップが難しいのと
        アプリやOSのアップデート時に
        たまにデータが飛ぶので基本設定のみで使用してます

        ゲームのセーブデータは外部ファイルの方がよさそうです