gamebox

unityとかゲームとか

【unity】Easy Save イージーセーブ【アセット】

f:id:rgamebox:20180525180455j:plain

データセーブとロードを便利にする有名なアセットEasy Saveについてです。

unity標準のPlayerPrefsよりと同等の使い勝手の良さながらも多機能です。
PlayerPrefsではint型、float型、string型の保存しかできないけど、
Easy Saveでは、DateTime型とかList<T>型、Vector3型などなど40種類程の型がサポートされている。

 

昔ちらっと使った事があったけど忘れたから習熟も兼ねてまとめてみる。

今回は基本的な使い方の説明です。

 

保存できる型一覧はこちら

Supported Types - Easy Save for Unity

 

調査開始してまずびっくりしたのが、Easy Save3とver2から3に上がっている事。
Easy Save2とはデータの互換性がないようです。

せっかくだからEasy Save3を使ってみよう。

※といっても今回のレベルでは関数がES2からES3になっている位でほとんど変わりがない感じでした

・「導入ガイド」を見て初歩的なセーブロードを行ってみます。

Getting Started with Easy Save 3 - Easy Save for Unity

 

以下の様にint型、float型、vector3型のロード/セーブを行います。

セーブ様のランダム値生成ボタンも作りました。

f:id:rgamebox:20180528144441p:plain

 

以下ソースコードになります。

PlayerPrefsと同じ様な使い勝手で簡単です。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class easysavetest : MonoBehaviour {

    int SLInt; //SL:Save Loadの略
    float SLFloat; //SL:Save Loadの略
    Vector3 SLVector3;
    public Text text;

    // Use this for initialization
    void Start () {
        //EasySave使用に初期化は必要ありません
    }

    // データセーブ (ボタンで実行)
    public void Save_Test()
    {
        ES3.Save<int>("SLInt", SLInt);
        ES3.Save<float>("SLFloat", SLFloat);
        ES3.Save<Vector3>("SLVector3", SLVector3);
        TextDisp();
    }

    // データロード (ボタンで実行)
    public void Loat_Test()
    {
        if (ES3.KeyExists("SLInt")){ //"SLInt"が存在しているか確認
            SLInt = ES3.Load<int>("SLInt");
        }
        else{ //存在していない場合は0
            SLInt = 0;
        }

        if (ES3.KeyExists("SLFloat")){ //"SLInt"が存在しているか確認
            SLFloat = ES3.Load<float>("SLFloat");
        }
        else{ //存在していない場合は0f
            SLFloat = 0f;
        }

        if (ES3.KeyExists("SLVector3")){ //"SLVector3"が存在しているか確認
            SLVector3 = ES3.Load<Vector3>("SLVector3");
        }
        else{ //存在していない場合は0,0,0
            SLVector3 = Vector3.zero;
        }

        TextDisp();
    }

    //ランダムの値を発生させる (ボタンで実行)
    public void RandomValue()
    {
        SLInt = Random.Range(0,100);
        SLFloat = Random.Range(0.0f,100f);
        SLVector3 = new Vector3(Random.Range(0.0f,100f),Random.Range(0.0f,100f),Random.Range(0.0f,100f));
        TextDisp();
    }

    //テキスト書き換え
    void TextDisp()
    {
        string str;
        str = "Int型 = " + SLInt.ToString()  + "\n" +
             "Float型 = " + SLFloat.ToString()  + "\n" +
             "Vector3型 = " + SLVector3.ToString();
        text.text = str;
    }
}

 

 セーブデータファイルについて

unityのメニュー > Window > EasySave3 を選ぶとウィンドウが開きます。

そこでセーブデータフォルダを開いたり、セーブデータの消去を行えます。

f:id:rgamebox:20180528152505p:plain

・・・テキストエディタで内容確認はできるんだけど、もっとグラフィカルに確認する事はできないのだろうか

 

・SaveData.es3を開いてみた ※上の画像と保存されている内容は異なります

{"SLVector3":{"__type":"UnityEngine.Vector3,UnityEngine.CoreModule","value":{"x":4.569817,"y":78.24599,"z":18.18734}},"SLFloat":{"__type":"System.Single,mscorlib","value":39.2764},"SLInt":{"__type":"System.Int32,mscorlib","value":68}}

 

 

 

Easy SaveはUnityゲームエンジンのためのセーブ&ロードアセットです

 

なぜEasy Saveを使うのでしょうか?

簡単に使用でき、完全にドキュメント化されているので、アマチュアの方でも扱いが簡単です。また、
高速で、機能が豊富であり、非常にフレキシブルな点は、エキスパートの方でも満足してお使いいただけます。 

 

特長:
高速で軽量
     PlayerPrefs、JSON&XMLより高速
PlayMakerとのインテグレーション
     完全なPlaymakerサポート、コーディング不要
ファイルIO、リーダーおよびライター
     シリアル化の完全なコントロール
暗号による安全なセーブデータ
     セーブデータを暗号化および難読化する
ウェブからデータをセーブおよびロードする
     PHP&MySQLを用いてアップロード&ダウンロード 
クロスプラットフォームのセーブ&ロード
     セーブファイルおよびコードをすべてのプラットフォームで使用 
ほとんど任意のタイプをシリアル化
     ビルトインおよびカスタムタイプをセーブ&ロード 
ビジュアルセーブファイルエディター
     セーブファイルをエディターから直接編集 
スプレッドシートを作成しセーブ
     Excel、Numbersなどのために 
オンラインで完全にドキュメント化されています
     ガイド、 サンプル、チュートリアル、 APIとともに 
カスタマーサポートに連絡
     電子メール および専用フォーラム を通じて連絡

      私どもに連絡 | FAQ | ドキュメンテーション | フォーラム

タグ: セーブ、ロード、シリアル化、playerprefs、ストレージ、アップロード、ダウンロード、ファイルのインポート、エクスポート、暗号、クラウド、excel、難読化、playerprefs