Unity json存ver2
时间: 2024-09-17 11:06:38 浏览: 101
Unity 中的 JSON 存储通常用于序列化游戏数据,以便在项目之间传递或保存玩家进度等信息。Unity 提供了 `JsonUtility` 和 `System.Text.Json` 等工具库来进行 JSON 的读写操作。
`JsonUtility` 是 Unity 5 及之前的版本中常用的 JSON 序列化工具,你可以使用它将 C# 对象转换为 JSON 字符串,或者反序列化 JSON 字符串回原对象。例如:
```csharp
using UnityEngine;
using System.Collections.Generic;
using Newtonsoft.Json;
// 定义一个简单的对象
public class MyData {
public string Name { get; set; }
public int Age { get; set; }
}
void SaveToJson() {
MyData data = new MyData { Name = "John", Age = 30 };
string jsonString = JsonUtility.ToJson(data);
// 将 JSON 写入文件
File.WriteAllText("data.json", jsonString);
}
void LoadFromJson() {
string jsonString = File.ReadAllText("data.json");
MyData data = JsonConvert.DeserializeObject<MyData>(jsonString);
// 使用反序列化的数据
}
```
从 Unity 2017 版本开始,推荐使用 `System.Text.Json`,因为它提供了更现代、高效和更易于使用的 JSON 序列化功能。下面是使用 `System.Text.Json` 的示例:
```csharp
using System.Text.Json;
using System.IO;
void SaveToJsonV2() {
MyData data = new MyData { Name = "John", Age = 30 };
using (var writer = new Utf8JsonWriter(File.OpenWrite("data.json"))) {
writer.WriteStartObject();
writer.WritePropertyName("Name");
writer.WriteStringValue(data.Name);
writer.WritePropertyName("Age");
writer.WriteNumberValue(data.Age);
writer.WriteEndObject();
}
}
void LoadFromJsonV2() {
string jsonString = File.ReadAllText("data.json");
using (var reader = new Utf8JsonReader(new StringReader(jsonString))) {
MyData data = JsonSerializer.Deserialize<MyData>(reader);
}
}
```
阅读全文