![赤かぶくん](https://matsubon-games.com/wp-content/uploads/2023/09/6b85b3a2158d8f6c63f5f6c70765c967-150x150.png)
セーブとロード機能を導入したいけど、どうやったら良いかわからない。
簡単にできる方法はないかな?
![まつぼん](https://matsubon-games.com/wp-content/uploads/2023/09/1539b9fb9655e07f9c165619bb313053.png)
そんなお悩みにお答えします!
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を選択してください。
![](https://matsubon-games.com/wp-content/uploads/2024/01/0d40a5e4a645fc6b96e767d64ac0878e-7.png)
PackageをMy Asesetsに変更。
Easy Saveを選択したら右下のImportをクリックします。
![](https://matsubon-games.com/wp-content/uploads/2024/01/fd6e677fb45eefcc221cbb65be75f52e-1024x275.png)
ダイアログが表示されたら、そのままImportをクリックします。
![](https://matsubon-games.com/wp-content/uploads/2024/01/0d40a5e4a645fc6b96e767d64ac0878e-8.png)
これでEasy Saveの導入が完了しました。
Easy Saveオートセーブの使い方
使い方としては、
- コードを書く
- オートセーブ
の2通りがあり、どちらも簡単な手順でセーブを実装できます。
今回は、基本コードいらずで簡単にセーブ機能を実装できるオートセーブをご紹介します。
前準備
例として簡単なゲームを作ったので、こちらを用いて説明します。
10秒の間にボタンを押した回数を競うというミニゲームです。
オートセーブを実装し、ハイスコアを保存・ゲーム再開後もハイスコアを表示したいと思います。
![](https://matsubon-games.com/wp-content/uploads/2024/01/a6ba3785c46a3e0ea26db07ed3742093.png)
ゲームの作り方については、こちらの記事をご参考ください。
既存のタイミングでオートセーブ・ロードする設定
まず、Tools→Easy Save 3→Auto Saveを選択します。
![](https://matsubon-games.com/wp-content/uploads/2024/01/0d40a5e4a645fc6b96e767d64ac0878e-9.png)
Enable Auto Save for this sceneをクリックします。
![](https://matsubon-games.com/wp-content/uploads/2024/01/8f4781a849235400f95f6ed25bbb79b7.png)
HierarchyタブにEasy Save 3 Managerが生成されました。
これはオートセーブに必要なものなので、削除しないようにしてください。
ただ、もし誤って削除したとしても前述のEnable Auto Save for this sceneから簡単に再生成できます。
![](https://matsubon-games.com/wp-content/uploads/2024/01/0d40a5e4a645fc6b96e767d64ac0878e-11.png)
あとセーブ項目を設定するダイアログが表示されているので、こちらから各種設定を行います。
![](https://matsubon-games.com/wp-content/uploads/2024/01/2d92f96e5837e09aed70864d4609f6cb.png)
初期設定は下記の通りです。
- Save Event:On Application Quit
- Load Event:Awake
簡単に言うと、ゲームを終了した時にセーブ、ゲームを始めたときにロードされます。
基本はこのままでOKです。
![](https://matsubon-games.com/wp-content/uploads/2024/01/955936fa2b71b9673c23be35174bd8aa.png)
今回は、ハイスコアを保存して、再開後にハイスコアを表示するようにします。
保存対象は下記のとおりです。
- ハイスコアを表示するテキスト
- ハイスコアの数値
HighScoreText左の三角をクリック→HighScoreText(Text)にチェック。
ClickManager左の三角をクリック→ClickManager(ClickManager)にチェック。
さらに右側の歯車アイコンをクリックします。
![](https://matsubon-games.com/wp-content/uploads/2024/01/5ab4d100d5c3c6d0fbbd843d4c508908.png)
保存する対象を選択します。
highScoreのみにチェックを入れてください。
![](https://matsubon-games.com/wp-content/uploads/2024/01/0842e4f0854b9052c085517ec055072d-1.png)
これで再開後にハイスコアを表示できるようになります。
お疲れさまでした。
既存のタイミングでオートセーブ・ロードする設定の注意点
上記で紹介した既存のタイミングでオートセーブ・ロードする設定ですが、いくつか問題点があります。
- 暗号化した時にロードするとエラーが出ることがある
- 一部の機種のスマホでは、ゲーム終了時にうまくセーブができないこともある
- 任意のタイミングでセーブ・ロードができない
- ゲーム終了時にセーブされるので、シーンをまたいだ場合セーブが実行されないことも…
これらに困ったときは、少し手間は増えますが、次項の任意のタイミングでオートセーブ・ロードする設定にすると良いです。
任意のタイミングでオートセーブ・ロードする設定
手順の違いは下記の2つです。
- Save EventをNone、Load EventをNoneに変更する
- オートセーブを実行するコードを書く
まず、Save EventをNone、Load EventをNoneに変更しましょう。
![](https://matsubon-games.com/wp-content/uploads/2024/01/6d0493b54ea1c587c0e3bea05f870fba.png)
これをしないとエラーが起きる場合があります。
公式マニュアルでも、下記の通り推奨しています。
![](https://matsubon-games.com/wp-content/uploads/2024/01/4a7a233475543f7f5054238aa0b64387.png)
そして、任意のタイミングでオートセーブ・ロードするには、オートセーブを実行するコードをスクリプトに書く必要があります。
- セーブ: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オートセーブの使い方詳細
ホームページのガイドには、オートセーブ以外にも色々な活用法が詳しく解説されていますので、参考にしてみてください。
![](https://matsubon-games.com/wp-content/uploads/cocoon-resources/blog-card-cache/00dc719be09f6fc1461bb85e4d7495fd.png)
【Unity】アセットEasy Saveの導入とオートセーブの使い方のまとめ
![まとめアイキャッチ](https://matsubon-games.com/wp-content/uploads/2024/03/5efcb8ffe5fab49fac82af23a91d51a5-1024x538.jpg)
本記事では、UnityのアセットEasy Saveの導入とオートセーブの使い方をご紹介しました。
Unity初心者にとって、Easy Saveはお手軽で効果的なセーブ・ロードの手段となります。
特にオートセーブは、初心者にとって便利で使いやすいです。
ぜひ、このアセットEasy Saveを取り入れて、よりスムーズなUnityゲーム開発を楽しんでみてください。
本記事が、皆さんの参考になれば幸いです。