Unity

UnityでセーブデータをJSONで保存する方法

UnityでセーブデータをJSONで保存する方法

この記事はAIによって自動生成されました(検証済みC#コードを含む)。


UnityでセーブデータをJSONで保存する方法

この記事では、UnityでゲームのセーブデータをJSON形式で保存する方法について解説します。JSONを使用することで、データの管理が容易になり、プレイヤーの進行状況を簡単に保存・読み込みできます。

1. 導入:この技術が必要な理由

ゲーム開発において、プレイヤーの進行状況や設定を保存することは非常に重要です。特に、プレイヤーがゲームを終了した後もデータを保持したい場合、セーブデータの管理が必要になります。JSONは軽量で人間にも読みやすいため、データの保存形式として非常に人気があります。

2. 基礎理論とC#構文の理解

JSON(JavaScript Object Notation)は、データをテキスト形式で表現するためのフォーマットです。Unityでは、C#のクラスをJSON形式にシリアライズ(変換)し、ファイルに保存することができます。


using System.IO;
using UnityEngine;
using Newtonsoft.Json; // Json.NETライブラリを使用

public class PlayerData {
    public string playerName;
    public int playerScore;
}

public class SaveLoadManager : MonoBehaviour {
    public void SaveData(PlayerData data) {
        string json = JsonConvert.SerializeObject(data);
        File.WriteAllText(Application.persistentDataPath + "/save.json", json);
    }
}

💡ヒント:このコードを動かすには、Json.NETライブラリをUnityプロジェクトに追加する必要があります。

3. Unityでの実装手順

  1. 新しいC#スクリプトを作成し、上記のコードを追加します。
  2. PlayerDataクラスに必要なデータフィールドを追加します。
  3. ゲーム内でセーブボタンを押したときにSaveDataメソッドを呼び出します。

4. ゲーム制作での応用例

このセーブシステムを使用することで、プレイヤーのデータを持続的に管理できます。例えば、プレイヤーのスコアやレベルを保存することで、次回ゲームを起動した際に前回の進行状況を復元できます。

応用例①:データの読み込み

保存したデータを読み込むためには、以下のようなメソッドを使用します。


public PlayerData LoadData() {
    string path = Application.persistentDataPath + "/save.json";
    if (File.Exists(path)) {
        string json = File.ReadAllText(path);
        PlayerData data = JsonConvert.DeserializeObject(json);
        return data;
    }
    return null;
}

5. よくあるエラーと対処法

  • FileNotFoundException: セーブファイルが存在しない場合に発生します。最初にセーブ処理を行っているか確認してください。
  • JsonSerializationException: JSON形式が不正な場合に発生します。データフィールドが正しく設定されているか確認してください。

6. まとめ

この記事で紹介した方法を使うことで、Unityでのセーブデータを簡単にJSON形式で保存・読み込みできます。これにより、プレイヤーの進行状況を持続的に管理し、より良いゲーム体験を提供できます。

7. 関連リンク


🧩 関連記事

  • JSONフォーマットの基本とその利点
  • C#を用いたデータのシリアライズとデシリアライズ
  • Unityにおけるファイル操作とデータ保存のベストプラクティス

🪄 参考元: Unity公式マニュアル