unity读json
时间: 2025-04-19 15:40:35 浏览: 31
### 如何在 Unity 中解析和读取 JSON 文件或字符串
#### 使用 `JsonUtility` 进行基本的数据序列化与反序列化
Unity 提供了一个内置工具 `JsonUtility` 来处理简单的 JSON 序列化和反序列化操作。对于大多数场景来说,这已经足够用了。
为了展示如何利用此功能来加载并解释来自 JSON 的信息,下面是一个具体的例子:
假设有一个表示玩家状态的 C# 类 PlayerData[^1]
```csharp
[System.Serializable]
public class PlayerData {
public int health;
public float experience;
}
```
接着可以创建一段用于保存以及恢复这些数据的方法:
```csharp
// 将对象转换成 JSON 字符串
string jsonString = JsonUtility.ToJson(playerData);
// 从 JSON 字符串重建对象实例
PlayerData loadedData = JsonUtility.FromJson<PlayerData>(jsonString);
```
这种方法简单易懂,并且不需要额外安装任何库就可以工作得很好。不过需要注意的是它只支持有限几种类型的成员变量(比如数值型、布尔值、字符串等),而且不支持复杂的嵌套结构或是自定义类型之间的映射关系。
#### 利用第三方库 LitJson 实现更复杂的需求
当遇到更加复杂的 JSON 结构时,则可能需要借助外部插件的帮助,例如 LitJson 或者 Newtonsoft.Json 。这里以 LitJson为例说明其用法[^2]:
首先通过 NuGet Package Manager 安装该包到项目里;之后便可以在脚本中引入相应的命名空间以便调用其中提供的 API 函数来进行更为灵活多样的编码/解码作业了。
```csharp
using LitJson;
...
void LoadFromJson(string json){
var data = JsonMapper.ToObject(json);
foreach(DictionaryEntry item in data){
Debug.Log(item.Key + ": " + item.Value);
}
}
void SaveToJson(object obj, string path){
string result = JsonMapper.ToJson(obj);
File.WriteAllText(path, result);
}
```
上述代码片段展示了怎样把一个普通的 .NET 对象转化为 JSON 文本形式存储起来,同时也示范了相反的过程——即依据给定路径下的文件内容构建一个新的哈希表集合出来加以遍历打印键值对儿的信息[^3]。
综上所述,在 Unity 开发过程中可以根据实际需求选择合适的手段完成针对 JSON 资源的操作任务。如果只是做一些基础性的交互那么官方自带的支持就完全可以胜任;而面对更高阶的应用场合则不妨考虑引进一些成熟的开源解决方案作为补充。
阅读全文
相关推荐

















