Unityアセット紹介

Unity初心者必見!Easy Save 3でスムーズなデータ管理を実現する方法

Unity

1. はじめに

ゲームを作るうえで、「データの保存と読み込み」は欠かせない要素のひとつです。例えば、プレイヤーのスコア、ゲームの進行状況、設定データなどを保存し、次回プレイ時に復元できるようにする必要があります。しかし、Unity標準の方法(例えばPlayerPrefs)では、数値や文字列などの単純なデータしか保存できず、複雑なデータを扱うのは難しくなります。

そこで登場するのが Easy Save 3 です!
このアセットを使えば、データの保存・読み込みを 簡単かつ安全 に行うことができます。スクリプトを書くだけで、変数やオブジェクトの情報をファイルに保存し、次回のプレイ時にそのデータを復元できるのが特徴です。

Easy Save 3 を使うメリット

  • 簡単なコードでデータを保存&読み込み
    Save メソッドと Load メソッドを使うだけでOK!
  • リストやクラスのオブジェクトも保存可能
    PlayerPrefs では難しい複雑なデータも扱える
  • データの暗号化も可能
    → チートや不正改ざんを防ぎたい場合にも便利
  • クラウドセーブにも対応
    → サーバーにデータを保存して、別のデバイスからでも復元できる

つまり、Easy Save 3を導入すれば、Unityの標準機能では難しいデータ管理が 手軽に&安全に 行えるようになります。
この記事では、Easy Save 3の基本的な使い方から、ゲームで役立つ実践的な活用方法まで詳しく解説していきます!


2. Easy Save 3の導入方法

Easy Save 3は、Unityの標準機能よりも簡単にデータの保存と読み込みができる強力なアセットです。まずは、アセットの導入方法を説明します。


① アセットストアからEasy Save 3を購入・インストールする

Easy Save 3は Unity Asset Store で販売されている有料アセットです。以下の手順でインストールしましょう。

  1. Unity Asset Storeを開く
    • Unity Asset Store にアクセスするか、Unityエディターの 「Window」→「Asset Store」 から開きます。
  2. Easy Save 3を検索する
    • Asset Storeの検索バーに 「Easy Save 3」 と入力し、アセットを探します。
  3. 購入&インポート
    • 購入ボタンをクリックして支払いを済ませると、「Open in Unity」ボタンが表示されます。
    • これをクリックすると、Unityの Package Manager が開きます。
    • 「Import」ボタン を押してEasy Save 3をプロジェクトに追加しましょう。

② 必要なセットアップを行う

インポートが完了したら、まずは基本的な設定を確認します。

1. ES3のメニューを確認

Easy Save 3をインポートすると、Unityのメニューに 「Tools」→「Easy Save 3」 という項目が追加されます。
ここから、データの管理や設定変更を行うことができます。

2. ES3 Settingsを開く

  1. 「Tools」→「Easy Save 3」→「Open ES3 Window」 をクリック
  2. 設定ウィンドウで、以下のオプションを確認:
    • Encryption(暗号化):データを保護したい場合はONにする
    • Auto Save:特定のデータを自動保存したい場合にチェックを入れる

3.Easy Save3Managerを配置する

  • インポートが完了したらtools→Easy Save→add Manager to sceanをクリックします。
  • Easy SaveManagerというオブジェクトがシーンに追加されます。

これでEasy Save 3の導入が完了しました!
次のステップでは、より具体的なデータの保存方法や、オブジェクトの管理について学んでいきましょう!


3. 基本的なデータの保存と読み込み

Easy Save 3(ES3)を使えば、データの保存や読み込みがとても簡単にできます。ここでは、スコアや設定データ、プレイヤーネームなどのシンプルなデータを保存する方法を解説します。


シンプルなデータの保存

ゲームでは、スコアや設定データをプレイヤーがゲームを閉じても保持したいことがよくあります。Easy Save 3を使えば、1行のコードで保存が可能です。

数値(スコアや設定)を保存する方法

例えば、プレイヤーのスコアを保存する場合、以下のように記述します。

ES3.Save("playerScore", 100);

このコードを実行すると、”playerScore” というキーで 100 というスコアが保存されます。

また、音量設定(float型)を保存する場合は、次のように書きます。

ES3.Save("volume", 0.8f);

この方法なら、ゲームの音量設定をプレイヤーが変更しても次回起動時に反映できます。


文字列(プレイヤーネームなど)を保存する方法

プレイヤーネームのような文字列データも簡単に保存できます。

ES3.Save("playerName", "UnityMaster");

これで、”playerName” というキーに "UnityMaster" という名前が保存されました。


データの読み込み

保存したデータをゲーム内で使うためには、ES3.Load() を使って読み込む必要があります。

スコアを読み込む

int playerScore = ES3.Load<int>("playerScore", defaultValue: 0);
Debug.Log("プレイヤースコア: " + playerScore);

このコードでは、”playerScore” というキーで保存されたデータを読み込みます。
もしデータが保存されていない場合は、デフォルト値(0)が返ります。


音量設定を読み込む

float volume = ES3.Load<float>("volume", defaultValue: 1.0f);
Debug.Log("現在の音量: " + volume);

このコードでは、”volume” のデータを読み込み、デフォルト値を 1.0f に設定しています。


プレイヤーネームを読み込む

string playerName = ES3.Load<string>("playerName", defaultValue: "Guest");
Debug.Log("プレイヤーネーム: " + playerName);

もし名前が保存されていなかった場合、デフォルト値 "Guest" が適用されます。


まとめ

  • ES3.Save("キー", 値); でデータを保存。
  • ES3.Load<型>("キー", defaultValue: 初期値); でデータを読み込み。
  • デフォルト値を設定しておくと、データが存在しない場合でもエラーを回避できる。

この方法を使えば、スコアや設定を簡単に管理できます!次は、さらに高度なデータ保存の方法について解説していきます。


4. 高度なデータ管理

Easy Save 3は、単なる数値や文字列の保存だけでなく、オブジェクトやリスト、暗号化機能を使ったデータ保護など、高度なデータ管理が可能です。ここでは、ゲーム開発でよく使われる「オブジェクトの保存・読み込み」「リストや配列の管理」「セーブデータの暗号化」について詳しく解説します。


オブジェクトの保存と復元

ゲームでは、プレイヤーデータや設定情報など、複数の値をまとめたオブジェクトを保存したい場面がよくあります。Easy Save 3では、クラスオブジェクトを簡単にJSON形式で保存・復元できます。

クラスオブジェクトをJSONで保存・読み込みする方法

まず、保存したいデータを持つクラスを作成します。

① データクラスを作成

プロジェクトウィンドウを右クリック「Create」→「C# Script」を選んで、新しいスクリプトを作成し、「PlayerData」と名前を付けます。そして、以下のコードを入力してください。

[System.Serializable] // シリアライズ可能にする
public class PlayerData
{
public string playerName;
public int score;
public float health;

public PlayerData(string name, int score, float health)
{
this.playerName = name;
this.score = score;
this.health = health;
}
}

System.Serializable を付けることで、オブジェクトをJSON形式で保存できるようになります。

② データを保存する

作成したクラスのオブジェクトをJSON形式で保存するには、以下のコードを使います。

using UnityEngine;
using ES3; // Easy Save 3の名前空間を追加

public class SaveLoadManager : MonoBehaviour
{
public void SavePlayerData()
{
PlayerData player = new PlayerData("Hero", 100, 75.5f);
ES3.Save("playerData", player); // オブジェクトを保存
Debug.Log("プレイヤーデータを保存しました!");
}
}

③ データを読み込む

保存したデータを復元するには、以下のように記述します。

public void LoadPlayerData()
{
if (ES3.KeyExists("playerData")) // データが存在するかチェック
{
PlayerData player = ES3.Load<PlayerData>("playerData");
Debug.Log($"プレイヤー名: {player.playerName}, スコア: {player.score}, 体力: {player.health}");
}
else
{
Debug.Log("保存されたデータがありません!");
}
}

リストや配列の保存

ゲームでは、複数のデータを一括で管理する必要があります。Easy Save 3では、リストや配列もそのまま保存・読み込みができます。

① リストを保存する

例えば、複数のプレイヤーデータをリストで保存する場合、以下のように記述します。

using System.Collections.Generic;

public void SavePlayerList()
{
List<PlayerData> players = new List<PlayerData>()
{
new PlayerData("Hero", 100, 75.5f),
new PlayerData("Warrior", 150, 90.2f),
new PlayerData("Mage", 80, 50.0f)
};

ES3.Save("playerList", players); // リストを保存
Debug.Log("プレイヤーリストを保存しました!");
}

② リストを読み込む

保存したリストを復元する場合は、以下のコードを使用します。

public void LoadPlayerList()
{
if (ES3.KeyExists("playerList"))
{
List<PlayerData> players = ES3.Load<List<PlayerData>>("playerList");
foreach (var player in players)
{
Debug.Log($"名前: {player.playerName}, スコア: {player.score}, 体力: {player.health}");
}
}
else
{
Debug.Log("保存されたプレイヤーリストがありません!");
}
}

暗号化オプション

ゲームのセーブデータを保護するために、Easy Save 3にはデータの暗号化機能が備わっています。特にオンラインゲームや重要なゲームデータを扱う場合、不正改ざんを防ぐために暗号化を有効にするのが推奨されます。

① データを暗号化して保存する

Easy Save 3では、以下のように簡単に暗号化を有効化できます。

ES3.Save("securePlayerData", new PlayerData("Hero", 100, 75.5f), new ES3Settings() { encryptionType = ES3.EncryptionType.AES, encryptionPassword = "MySecretKey" });
  • encryptionType = ES3.EncryptionType.AES
    → AES暗号化を適用
  • encryptionPassword = "MySecretKey"
    → 独自のパスワードを設定(第三者に知られないように注意!)

② 暗号化データを読み込む

保存した暗号化データを復元するには、以下のコードを使用します。

PlayerData securePlayer = ES3.Load<PlayerData>("securePlayerData", new ES3Settings() { encryptionType = ES3.EncryptionType.AES, encryptionPassword = "MySecretKey" });

Debug.Log($"暗号化されたデータ - 名前: {securePlayer.playerName}, スコア: {securePlayer.score}, 体力: {securePlayer.health}");

③ 暗号化のポイント

  • 必ず独自のパスワードを設定する
  • 暗号化するとデータサイズが少し増える
  • ゲームのセキュリティを強化するため、スコアや進行データなど重要な情報に適用するのがおすすめ

まとめ

Easy Save 3を使えば、オブジェクトやリストの保存が簡単にできるだけでなく、データの暗号化でセキュリティを強化することも可能です。
特に以下のポイントを押さえておきましょう。

クラスオブジェクトをJSON形式で保存・読み込み可能
リストや配列の一括保存でデータ管理をスムーズに
AES暗号化で不正アクセスを防ぐ

これらを活用すれば、RPGのセーブデータ管理やオンラインゲームのユーザーデータ保存など、幅広い場面で応用できます!


5. ゲームでの実践例

このセクションでは、Easy Save 3 を使った実際のゲームでのデータ管理方法について解説します。特に、オートセーブ機能チェックポイントの管理 に焦点を当て、具体的なコードとともに紹介します。


オートセーブ機能の実装

ゲームの進行状況を自動的に保存する「オートセーブ機能」は、プレイヤーにとって便利な機能です。Unityでは、OnApplicationQuit メソッドを使うことで、ゲーム終了時に自動的にデータを保存できます。

① 保存するデータの作成

まずは、保存するデータのクラスを作成しましょう。例えば、プレイヤーのスコアやレベル、位置情報などを保存したい場合、次のようなクラスを作成します。

PlayerData.cs
[System.Serializable]
public class PlayerData
{
public int level;
public int score;
public float[] position;

public PlayerData(int level, int score, Vector3 pos)
{
this.level = level;
this.score = score;
this.position = new float[3] { pos.x, pos.y, pos.z };
}
}

② データを保存するスクリプト

次に、ゲーム終了時にこのデータを保存するスクリプトを作成します。

AutoSave.cs
using UnityEngine;
using ES3;

public class AutoSave : MonoBehaviour
{
public Transform player; // プレイヤーのTransform

private void OnApplicationQuit()
{
SaveGameData();
}

public void SaveGameData()
{
// プレイヤーデータを作成
PlayerData data = new PlayerData(5, 1200, player.position);

// データを保存
ES3.Save("playerData", data);
Debug.Log("ゲームデータを自動保存しました!");
}
}

解説

  • OnApplicationQuit() はゲーム終了時(アプリが閉じられる直前)に呼ばれます。
  • PlayerData オブジェクトを作成し、ES3.Save を使って保存します。
  • 保存されたデータは次回のゲーム起動時に復元できます。

③ ゲーム開始時にデータを復元

ゲームを再開したときに、前回のデータをロードする機能も追加しましょう。

public void LoadGameData()
{
if (ES3.KeyExists("playerData"))
{
PlayerData data = ES3.Load<PlayerData>("playerData");
player.position = new Vector3(data.position[0], data.position[1], data.position[2]);
Debug.Log("ゲームデータをロードしました!");
}
}

ポイント

  • ES3.KeyExists("playerData") でデータの有無を確認
  • ES3.Load<PlayerData>("playerData") で保存データを復元
  • プレイヤーの位置を復元して、前回の続きからプレイ可能に

チェックポイントのデータ管理

チェックポイント を設定し、プレイヤーが特定のポイントに到達したときにデータを保存する方法を紹介します。

① チェックポイントを作成

まず、シーン内に チェックポイントのオブジェクト を作成し、Checkpoint スクリプトをアタッチします。

Checkpoint.cs
using UnityEngine;
using ES3;

public class Checkpoint : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
SaveCheckpoint(other.transform);
}
}

private void SaveCheckpoint(Transform playerTransform)
{
ES3.Save("checkpoint", playerTransform.position);
Debug.Log("チェックポイントを保存しました!");
}
}

解説

  • OnTriggerEnter でプレイヤーがチェックポイントに到達したことを検出
  • ES3.Save("checkpoint", playerTransform.position); で位置データを保存

② チェックポイントから復元

次に、ゲーム開始時にチェックポイントのデータをロードする処理を作成します。

public void LoadCheckpoint()
{
if (ES3.KeyExists("checkpoint"))
{
Vector3 checkpointPos = ES3.Load<Vector3>("checkpoint");
player.transform.position = checkpointPos;
Debug.Log("チェックポイントから復元しました!");
}
}

ポイント

  • ES3.KeyExists("checkpoint") でデータの有無を確認
  • ES3.Load<Vector3>("checkpoint") でプレイヤーの位置を復元
  • ゲームを再開してもチェックポイントからスタートできるように

まとめ

Easy Save 3 を使うことで、オートセーブ機能チェックポイント管理 が簡単に実装できます。
特に、ES3.SaveES3.Load を活用することで、ゲームデータの保存と復元をスムーズに行えます。

  • オートセーブ機能OnApplicationQuit() を利用してゲーム終了時に保存
  • チェックポイント管理OnTriggerEnter を使ってプレイヤーの位置を保存・復元

Easy Save 3 を活用して、快適なゲーム体験を提供しましょう! 🎮


6. よくあるエラーと解決策

Easy Save 3は非常に便利なデータ管理ツールですが、設定ミスやスクリプトの記述ミスによって、データが正しく保存・読み込みされないことがあります。ここでは、よくあるエラーとその解決策を紹介します。


データが保存されない場合の対処法

「データを保存したはずなのに、次回起動時に反映されていない…」そんな問題が発生した場合、以下のポイントを確認しましょう。

1. セーブ処理を正しく実行しているか確認

Easy Save 3では、以下のようなコードでデータを保存できます。

ES3.Save("playerScore", 100);

このコードが実際に実行されているかを Debug.Log() で確認してみましょう。

int score = 100;
ES3.Save("playerScore", score);
Debug.Log("スコアを保存しました: " + score);

このログがコンソールに表示されない場合、セーブ処理が呼び出されていない可能性があります。スクリプトのアタッチやメソッドの呼び出しタイミングを見直しましょう。


2. データの保存場所を確認

Easy Save 3のデフォルトの保存先は、プラットフォームごとに異なります。
例えば、Windowsでは C:\Users\ユーザー名\AppData\LocalLow\会社名\プロジェクト名\ に保存されます。

保存されたファイルが見当たらない場合、以下のコードで実際の保存先を確認できます。

Debug.Log("データの保存パス: " + ES3Settings.defaultSettings.path);

もしデータが見つからない場合は、適切なディレクトリに書き込める権限があるかを確認しましょう。


3. PlayerPrefsを使ってテストする

Easy Save 3が正しく動作しているか確認するために、一時的に PlayerPrefs でテストするのも有効です。

PlayerPrefs.SetInt("test", 1);
PlayerPrefs.Save();
Debug.Log("PlayerPrefsでデータを保存しました");

このコードでデータが正しく保存される場合、Easy Save 3の設定に問題がある可能性が高いです。


読み込み時にエラーが出る場合のチェックポイント

「保存したデータを読み込もうとしたらエラーが発生する…」そんなときは、次のポイントをチェックしましょう。

1. キーが間違っていないか

保存したときと同じキーを使っているか確認してください。

// 保存時
ES3.Save("playerScore", 100);

// 読み込み時
int score = ES3.Load<int>("playerScore");

例えば、ES3.Load("score") のように誤ったキーを指定していると、データが見つからずエラーになります。


2. データが存在するかチェック

読み込む前に、データが保存されているか確認しましょう。

if (ES3.KeyExists("playerScore"))
{
int score = ES3.Load<int>("playerScore");
Debug.Log("スコアを読み込みました: " + score);
}
else
{
Debug.Log("スコアデータが存在しません");
}

このコードを使うことで、データが存在しない場合の対処ができます。


3. 型が一致しているか確認

保存したデータの型(int, string, floatなど)が異なっていると、エラーが発生します。

// int型で保存
ES3.Save("playerScore", 100);

// 読み込むときにstring型を指定(エラーになる)
string score = ES3.Load<string>("playerScore");

この場合、正しい型を指定して再読み込みしましょう。


データの破損を防ぐための注意点

ゲームがクラッシュしたり、誤ったデータを保存したりすると、セーブデータが壊れることがあります。これを防ぐための対策を紹介します。

1. バックアップを作成する

Easy Save 3では、バックアップ用に別のファイルを作成することができます。

ES3.Save("backup_playerScore", ES3.Load<int>("playerScore"));

ゲームの開始時にバックアップがあるかを確認し、メインのデータが壊れていた場合はバックアップから復元するようにすると、安全性が高まります。


2. Try-Catchを使ってエラーを防ぐ

読み込み処理中にエラーが発生すると、ゲームがクラッシュすることがあります。try-catch を使ってエラーを回避しましょう。

try
{
int score = ES3.Load<int>("playerScore");
Debug.Log("スコアを読み込みました: " + score);
}
catch (System.Exception e)
{
Debug.LogError("データの読み込みに失敗しました: " + e.Message);
}

このようにすることで、エラーが発生してもゲームが止まらず、プレイヤーに適切な対応を促せます。


3. データの暗号化を有効にする

外部からの改ざんを防ぐために、Easy Save 3の暗号化機能を利用するのもおすすめです。

ES3.Save("playerScore", 100, new ES3Settings(){ encryptionType = ES3.EncryptionType.AES });

この設定を有効にすると、セーブデータが暗号化され、改ざんを防げます。


まとめ

  • データが保存されない場合
    Debug.Log() でセーブ処理を確認、保存パスをチェック
  • データが読み込めない場合
    → キーの確認、データの存在チェック、型の一致を確認
  • データ破損を防ぐには
    → バックアップの活用、try-catch でエラー処理、暗号化設定を利用

このような対策を行うことで、Easy Save 3をより安全かつ安定して活用できます!


7. まとめ

Easy Save 3のメリットの再確認

Easy Save 3を使うことで、ゲーム開発におけるデータの管理が驚くほど簡単になります。特に以下のようなメリットがあるため、多くの開発者に愛用されています。

簡単なコードでデータを保存・読み込み
Unity標準のPlayerPrefsと比べ、シンプルな記述で多様なデータを扱えます。

複雑なデータ構造にも対応
数値や文字列だけでなく、リストやカスタムクラス、ゲームオブジェクトのデータも保存可能。

データの暗号化が可能
ユーザーのセーブデータを保護し、不正な改ざんを防ぐことができます。

クラウドセーブやWeb APIと連携可能
ローカルだけでなく、クラウドサーバーを利用してオンラインストレージへの保存も可能。

セーブの自動化ができる
オートセーブ機能を簡単に実装でき、ユーザーの負担を減らせる。

これらの特徴により、開発の手間を大幅に省きながら、より信頼性の高いデータ管理を実現できます。


実際のゲーム開発に役立つ活用法の提案

Easy Save 3の機能を活かせば、さまざまなゲームジャンルで便利にデータ管理が行えます。いくつかの活用例を紹介します。

🎮 RPGゲームでの活用

  • プレイヤーのレベル、スキル、所持アイテムのデータを保存
  • クエストの進行状況や分岐シナリオを記録

🚗 レースゲームでの活用

  • プレイヤーのベストラップタイムやスコアを保存
  • アンロックした車やカスタマイズデータを管理

🏗 サンドボックスゲームでの活用

  • プレイヤーが作った建造物のデータをJSONで保存し、再現可能に
  • ワールドの状態(天候、時間、イベント進行度)を記録

🕹 アクションゲームでの活用

  • チェックポイントでのオートセーブを実装
  • 使用キャラクターや装備のカスタマイズ設定を記憶

このように、Easy Save 3はあらゆるジャンルのゲームに対応できる柔軟なデータ管理ツールです。
もし「セーブ機能を簡単に実装したい!」「プレイヤーのデータをしっかり管理したい!」という場合は、ぜひEasy Save 3を活用してみてください。


よくある質問(FAQ)

Q
Easy Save 3は無料で使えますか?
A

いいえ、有料アセットですが、その価値は十分にあります。

Q
モバイルゲームでも使えますか?
A

はい、AndroidやiOSでも問題なく使用できます。

Q
どのデータ形式で保存されますか?
A

JSONやバイナリ形式で保存できます。

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