Easy Save2 を使ってみる

はじめに

Unityではデータの保存にPlayerPrefsを使うことはできるけど、int, float, stringしか保存できないので、簡単な用途にしか使えない。
データの保存を簡単にできるアセットに Easy Save2 がある。
これをセールで安かったため、購入し使ってみることにした。

対応しているプラットフォーム

PC、Mac、Web、Linux、iOS、Android、Windows Phone 8、Windows Store となっており、ひと通り動くようだ。
Webプレイヤーはデータの保存容量に1MBの制限があるみたい。

対応している型

Supported Typesを見れば一目瞭然。
ListやDictionaryなどのコレクション系はもちろん、VectorとかTransofrmもいけるらしい。

実際にセーブ・ロードする

特に難しいこともなく、PlayerPrefsを使う感覚と同じ感じ。リストとtransformのセーブとロードはこんな感じ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//リストのセーブ.
List<string> strs = new List<string>();
strs.Add("abc");
strs.Add("def");
ES2.Save(strs, "stringList");
//リストのロード.
List<string> loadStrings = ES2.LoadList<string>("stringList");

//transformのセーブ.
transform.position = new Vector3(0.5f, 1f, 2f);
ES2.Save(transform, "transform");

//transformのロード.
Transform t = ES2.Load<Transform>("transform");

保存場所

Application.persistentDataPathがデフォルトの保存場所のようだ。
Windowsだと C:\Users\xxxx\AppData\LocalLow{Company Name}{Product Name} 。
Company Name と Product Name は Player Settings の項目にあるやつ。
もちろん、保存場所を変更することができ、ビルドしてできたexeファイルと同じ場所に保存することも可能。

iOSやAndroidの保存場所は下記が参考になる。
【Unity3D】ファイル保存パス

データファイル

保存場所を開くと、前述で試したファイルが存在しているのがわかる。
保存場所

keyごとにファイルが生成されているが、タグという機能を使うと1つのファイルにまとめることができる。

1
2
ES2.Save(strs, "someFile?tag=stringList");
ES2.Save(transform, "someFile?tag=transform");

こうすると、someFile というファイルだけが生成される。

暗号化

ファイルの暗号化にも対応している。こんな感じ。

1
2
3
ES2.Save(strs, "stringList?encrypt=true&password=test");
loadStrings = ES2.LoadList<string>("stringList?encrypt=true&password=test");
loadStrings = ES2.LoadList<string>("stringList"); //エラー.

毎回、設定するのが面倒な場合は、デフォルト設定で暗号化をONにすれば良い。
Projectのところで右クリックすると、Easy Save2 用のメニューが追加されているので、「Add Default Settings Object to Scene」 を選択すればデフォルト設定ができる。

ざっと紹介したけど、紹介したことは全部Easy Save 2 Documentationに載っているので、最新の情報や詳しいことはそちらを参照してほしい。

応用

Easy Save2 で シリアライズされたクラスを保存する

確認バージョン

Unity 4.6

Unityカテゴリの記事
Color SpaceがLinearのときUIの透明度が正しくならない
History Inspectorの紹介
History Inspectorの紹介
敵AIとビジュアルスクリプティング
Chronosを使った感想
コンポーネントの順番をスクリプトから並び替える
Smart Inspectorの紹介
Kris' Favorite Assets が便利
キー操作でUIのナビゲーションをループさせる
TextMeshProのSprite Assetを更新する
UnityPhysicsDebugDraw2D が便利
色管理を考える
細かいTips
ビルドスクリプトを書く
AnimatorのCulling Modeでハマった話
Vectrosityを使ってUGUI上で線や円のアニメーションをする
スプレッドシートからjsonデータを読み込む
ビジュアルノベルアセットFungusにコマンドを追加してカスタマイズする
Skinned Mesh Renderer の Boundsについて
シーンごとにビルド結果の容量を出す
シーンビューにクオリティ設定のスライダーを出すエディタ拡張
ビルド結果のFile headersが大きい理由
フリーのビジュアルノベルアセットFungusを使ってRPGのイベントを作る
Move To View を改良する
フリーのビジュアルノベルアセットのFungusが便利
Visual Studio で保存時にフォーマットする
スプレッドシートからデータを読み込む
Easy Save2 で シリアライズされたクラスを保存する
ShaderでSpriteの色相をシフトする
Sprite、Texture の 色相をシフトする
uGUIのButtonをクリック時にハイライトのままになる
uGUIのCanvas Groupを使って透過処理をしたり、操作を制限する
自作のコンフィグ画面に必要なもの
uGUIでトグルなボタンを作る
uGUI で動的にボタンを作る
csv読み込んで ローカライズ
LoadLevelAdditive で共通シーンを加算
画面全体に色をかける
Any State でどこからでも遷移できるようにする
iTween のStop ではまる
sprite の multiple で 境界がおかしくなる
2D画面に線を引く Line Renderer
Renderer の Materials を スクリプトから設定する
背景をスクロールさせる