Unityアセットストア セール情報まとめはこちら
Unityアセットストア セール 7/15まで

約200のアセットが最大50%割引!
開発を効率化して、好きなゲームを作ろう

販売ページはこちら
Unity

【Unity】アセットEasy Saveの導入とオートセーブの使い方

Unity アイキャッチ
記事内に広告が含まれています。
スポンサーリンク
赤かぶくん
赤かぶくん

セーブとロード機能を導入したいけど、どうやったら良いかわからない。

簡単にできる方法はないかな?

まつぼん
まつぼん

そんなお悩みにお答えします!

Unityでゲームを開発していると、セーブ・ロード機能が必要になることがあります。

でも、導入をどのようにすれば良いのか、初心者にはいまいちわかりづらいです。

そこで、UnityアセットのEasy Saveを使うと、簡単にセーブ・ロード機能を導入することができます。

特にオートセーブは基本コードいらずで実装できるので、とてもおすすめです。

本記事では、UnityのアセットEasy Saveの導入とオートセーブの使い方をご紹介します。

スポンサーリンク

Easy Saveとは

Easy Saveは手軽にセーブ・ロードを導入できるUnityのアセットです。

コードを記述して好きなタイミングでセーブ・ロードを実装できます。

また、チェックを入れるだけのオートセーブにも対応しています。

セーブデータを暗号化することでセキュリティを高めることもできます。

このアセットを使用することで、セーブに関わる手間を大幅に削減できます。

スポンサーリンク

Easy Saveの導入

Easy Saveを導入する手順は、下記のとおりです。

Easy Saveを購入

Easy Saveを持っていない方は、まずはアセットストアから購入しましょう。

Easy Saveをインポートする

Unityエディタを開きます。

Window→Package Managerを選択してください。

PackageをMy Asesetsに変更。

Easy Saveを選択したら右下のImportをクリックします。

ダイアログが表示されたら、そのままImportをクリックします。

これでEasy Saveの導入が完了しました。

スポンサーリンク

Easy Saveオートセーブの使い方

使い方としては、

  • コードを書く
  • オートセーブ

の2通りがあり、どちらも簡単な手順でセーブを実装できます。

今回は、基本コードいらずで簡単にセーブ機能を実装できるオートセーブをご紹介します。

前準備

例として簡単なゲームを作ったので、こちらを用いて説明します。

10秒の間にボタンを押した回数を競うというミニゲームです。

オートセーブを実装し、ハイスコアを保存・ゲーム再開後もハイスコアを表示したいと思います。

ゲームの作り方については、こちらの記事をご参考ください。

既存のタイミングでオートセーブ・ロードする設定

まず、Tools→Easy Save 3→Auto Saveを選択します。

Enable Auto Save for this sceneをクリックします。

HierarchyタブにEasy Save 3 Managerが生成されました。

これはオートセーブに必要なものなので、削除しないようにしてください。

ただ、もし誤って削除したとしても前述のEnable Auto Save for this sceneから簡単に再生成できます。

あとセーブ項目を設定するダイアログが表示されているので、こちらから各種設定を行います。

初期設定は下記の通りです。

  • Save Event:On Application Quit
  • Load Event:Awake

簡単に言うと、ゲームを終了した時にセーブ、ゲームを始めたときにロードされます。

基本はこのままでOKです。

今回は、ハイスコアを保存して、再開後にハイスコアを表示するようにします。

保存対象は下記のとおりです。

  • ハイスコアを表示するテキスト
  • ハイスコアの数値

HighScoreText左の三角をクリック→HighScoreText(Text)にチェック。

ClickManager左の三角をクリック→ClickManager(ClickManager)にチェック。

さらに右側の歯車アイコンをクリックします。

保存する対象を選択します。

highScoreのみにチェックを入れてください。

これで再開後にハイスコアを表示できるようになります。

お疲れさまでした。

既存のタイミングでオートセーブ・ロードする設定の注意点

上記で紹介した既存のタイミングでオートセーブ・ロードする設定ですが、いくつか問題点があります。

  • 暗号化した時にロードするとエラーが出ることがある
  • 一部の機種のスマホでは、ゲーム終了時にうまくセーブができないこともある
  • 任意のタイミングでセーブ・ロードができない
  • ゲーム終了時にセーブされるので、シーンをまたいだ場合セーブが実行されないことも…

これらに困ったときは、少し手間は増えますが、次項の任意のタイミングでオートセーブ・ロードする設定にすると良いです。

任意のタイミングでオートセーブ・ロードする設定

手順の違いは下記の2つです。

  • Save EventをNone、Load EventをNoneに変更する
  • オートセーブを実行するコードを書く

まず、Save EventをNone、Load EventをNoneに変更しましょう。

これをしないとエラーが起きる場合があります。

公式マニュアルでも、下記の通り推奨しています。

そして、任意のタイミングでオートセーブ・ロードするには、オートセーブを実行するコードをスクリプトに書く必要があります。

  • セーブ:ES3AutoSaveMgr.Current.Save();
  • ロード:ES3AutoSaveMgr.Current.Load();

今回は、ハイスコア更新時にセーブ、スタート時にロードするようにしたいと思います。

ClickManagerスクリプトを下記の通り変更します。

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

public class ClickManager : MonoBehaviour
{

    //カウント用の変数を用意
    public int count = 0;

    //テキスト型の変数を用意。スコア表示
    public Text countText;

    //float型の変数を用意
    public float time = 10.0f;

    //テキスト型の変数を用意。タイム表示
    public Text timeText;

    //ハイスコア用の変数を用意
    public int highScore = 0;

    //テキスト型の変数を用意。ハイスコア表示
    public Text highScoreText;




    //変数を増やす関数を作成
    public void PushButton()
    {
        //timeが0より上の時
        if (time > 0)
        {
            //countを1ずつ増やす
            count++;

            //増えた数字をテキストで表示
            countText.text = "スコア:" + count;
        }
    }



    // Start is called before the first frame update
    void Start()
    {
        //オートロードする
        ES3AutoSaveMgr.Current.Load();
    }

    // Update is called once per frame
    void Update()
    {
        //timeが0以下の時
        if (time <= 0)
        {
            //テキストにカウントダウンの表示をする
            timeText.text = "タイム:0.00";
        }
        else
        {
            //カウントダウンさせる
            time -= Time.deltaTime;

            //テキストにカウントダウンの表示をする
            timeText.text = "タイム:" + time.ToString("f2");
        }

        //ハイスコアを超えた場合に更新
        if (highScore < count)
        {
            highScore = count;
            Debug.Log(highScore);

            //ハイスコアをテキストで表示
            highScoreText.text = "ハイスコア:" + highScore;

            //オートセーブする
            ES3AutoSaveMgr.Current.Save();
        }
    }
}

これで再開後にハイスコアを表示できるようになりました。

お疲れさまでした。

スポンサーリンク

Easy Saveオートセーブの使い方詳細

ホームページのガイドには、オートセーブ以外にも色々な活用法が詳しく解説されていますので、参考にしてみてください。

Auto Save: Saving without Code - Easy Save for Unity
Guide for saving and loading without any programming/coding in Easy Save, the Complete Save and Load Solution for Unity
Getting Started with Easy Save 3 - Easy Save for Unity
A guide to getting started with Easy Save, the Complete Save and Load Solution for Unity

スポンサーリンク

【Unity】アセットEasy Saveの導入とオートセーブの使い方のまとめ

まとめアイキャッチ

本記事では、UnityのアセットEasy Saveの導入とオートセーブの使い方をご紹介しました。

Unity初心者にとって、Easy Saveはお手軽で効果的なセーブ・ロードの手段となります。

特にオートセーブは、初心者にとって便利で使いやすいです。

ぜひ、このアセットEasy Saveを取り入れて、よりスムーズなUnityゲーム開発を楽しんでみてください。

本記事が、皆さんの参考になれば幸いです。

タイトルとURLをコピーしました