ホームページ >バックエンド開発 >C++ >JSONとPlayerPrefsを使用してUnity3Dでゲームデータを堅牢に保存およびロードする方法は?

JSONとPlayerPrefsを使用してUnity3Dでゲームデータを堅牢に保存およびロードする方法は?

DDD
DDDオリジナル
2025-01-31 18:06:12786ブラウズ

How to Robustly Save and Load Game Data in Unity3D using JSON and PlayerPrefs?

unity3d high -efficiencyゲームステータス保存方法

BinaryFormatterメソッドは、場合によっては問題に遭遇する場合があります(特にiOSデバイスで)。 Deepertine中のクラスマッチングに依存するため、更新または改造後にデータ損失を引き起こす可能性があります。さらに、問題を防ぐためにiOSに環境変数を追加する必要があります。

これらの制限を解決し、より強力なソリューションを提供するために、PlayerPrefsとJSONを使用してゲームステータスを保存することをお勧めします。 PlayerPrefsは、少量のデータをストレージの重要な値として使用できる便利なメカニズムを提供し、JSON(JavaScriptオブジェクト表記)は、オブジェクトに簡単に変換してオブジェクトから変換できる構造化された形式を提供します。

このメソッドは、JSON文字列をバイト配列に変換し、

および

を使用してデータを読み書きすることでさらに強化できます。 File.WriteAllBytes File.ReadAllBytes以下は、このテクノロジーの一般的なデモンストレーションです

このタイプの使用は次のとおりです

DataSaverこの例は、エラー処理を改善し、より一般的なタイプ

を使用し、
<code class="language-csharp">public class DataSaver
{
    // 保存数据
    public static void SaveData<T>(T dataToSave, string dataFileName)
    {
        string path = Path.Combine(Application.persistentDataPath, dataFileName + ".json"); // 使用 Application.persistentDataPath  保证数据持久性

        string jsonData = JsonUtility.ToJson(dataToSave, true);
        byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonData); // 使用 UTF8 编码

        Directory.CreateDirectory(Path.GetDirectoryName(path) ?? ""); // 创建目录,处理空路径

        try
        {
            File.WriteAllBytes(path, jsonBytes);
            Debug.Log("数据已保存到: " + path);
        }
        catch (Exception e)
        {
            Debug.LogError("保存数据失败: " + path + "\n错误信息: " + e.Message);
        }
    }

    // 加载数据
    public static T LoadData<T>(string dataFileName)
    {
        string path = Path.Combine(Application.persistentDataPath, dataFileName + ".json");

        if (!File.Exists(path))
        {
            Debug.Log("文件不存在: " + path);
            return default(T);
        }

        byte[] jsonBytes = null;
        try
        {
            jsonBytes = File.ReadAllBytes(path);
            Debug.Log("数据已加载自: " + path);
        }
        catch (Exception e)
        {
            Debug.LogError("加载数据失败: " + path + "\n错误信息: " + e.Message);
            return default(T);
        }

        string jsonData = Encoding.UTF8.GetString(jsonBytes); // 使用 UTF8 编码

        return JsonUtility.FromJson<T>(jsonData);
    }
}</code>
を使用してデータの耐久性を確保し、コーディングの問題を修正します。

属性をクラスに追加することを忘れないでください。

以上がJSONとPlayerPrefsを使用してUnity3Dでゲームデータを堅牢に保存およびロードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。