【Unity】「Easy Save」の高速なセーブとロードの方法

スポンサーリンク

はじめに

今回は「Easy Save」のより高速なセーブ、ロードの方法を勉強します。
前回の記事は下記のリンクになります。

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

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

Easy Saveの高速なセーブ、ロードの方法

セーブの方法

「Easy Save」でより高速にセーブするには「ES2Writer」を使用します。これを使用することによってセーブ時にファイルをオープンしたままにするため、ES2.Saveを何回も呼ぶより高速になります。


using (ES2Writer writer = ES2Writer.Create("myFile.txt"))
{
  writer.Write("string", "stringTag");
  writer.Write(123, "intTag");
  writer.Write(this.transform, "transformTag");
  writer.Save();
}

注意点としては、最後にSaveメソッドを呼ぶことと同じファイルに対して同時に複数のES2WriterとES2Readerを開かないことです。またusing句を使わない場合は最後にDisposeメソッドを呼ぶ必要があります。

ロードの方法

ロードの方法もセーブとほぼ同じで「ES2Reader」を使用して、ロードします。


using (ES2Reader reader = ES2Reader.Create("myFile.txt"))
{
  string s = reader.Read("stringTag");
  int i = reader.Read("intTag");
  reader.Read("transformTag", this.transform);
}

より高速にセーブ、ロードする方法

さらに高速にセーブ、ロードする方法としてtagを使用しない方法があります。
この方法で注意する点はセーブするデータとロードするデータの順番を同じにすることとSave(false)メソッドでセーブすることです。


// セーブの方法
using (ES2Writer writer = ES2Writer.Create("myFile.txt"))
{
  writer.Write("string");
  writer.Write(123);
  writer.Write(this.transform);
  writer.Save(false);
}

// ロードの方法
using (ES2Reader reader = ES2Reader.Create("myFile.txt"))
{
  string s = reader.Read();
  int i = reader.Read();
  reader.Read(this.transform);
}

まとめ

私の場合は大体セーブとロードはまとめてやっているので、このES2Writer、ES2Readerを使用する方法で問題なさそうです。

参考サイト

Faster Saving and Loading using ES2Writer and ES2Reader – Moodkie Docs
http://docs.moodkie.com/easy-save-2/guides/faster-saving-and-loading-using-es2writer-and-es2reader/

検証環境

Windows 10 Pro
Unity 2017.2.0f3
Easy Save 2.8.4