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 サイトの他の関連記事を参照してください。