关于Unity读取JSON的坑

最近在做项目的时候发现读取Json的过程过出现了这么一个问题:

KeyNotFoundException: The given key was not present in the dictionary. System.Collections.Generic.Dictionary`2[System.Int32,System.Int32[]].get_Item (Int32 key) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Diction

反复看了代码都没有发现错误,最后才知道是Text文档的错误,如果你在excel写完数据 在网上转换成Json格式导入的话,最后一行的逗号是没有去掉的,一定要记得去掉最后一行的逗号!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Unity读取JSON数据,可以使用JsonUtility类。JsonUtility类可以将JSON数据转换成C#对象,也可以将C#对象转换成JSON数据。 以下是一个示例代码,演示如何使用JsonUtility类读取JSON数据: ```csharp using UnityEngine; using System.IO; public class JsonReader : MonoBehaviour { // JSON文件路径 public string jsonFilePath; // 定义一个表示JSON数据的类 [System.Serializable] public class JsonData { public string name; public int age; public string[] hobbies; } void Start() { // 读取JSON文件内容 string jsonContent = File.ReadAllText(jsonFilePath); // 将JSON数据转换成C#对象 JsonData jsonData = JsonUtility.FromJson<JsonData>(jsonContent); // 输出读取到的数据 Debug.Log("Name: " + jsonData.name); Debug.Log("Age: " + jsonData.age); Debug.Log("Hobbies: " + string.Join(", ", jsonData.hobbies)); } } ``` 在上面的示例代码中,我们首先定义了一个表示JSON数据的类JsonData。然后在Start函数中,我们使用File.ReadAllText方法读取JSON文件内容,并使用JsonUtility.FromJson方法将JSON数据转换成JsonData对象。最后,我们输出读取到的数据。 需要注意的是,在使用JsonUtility类时,C#对象的字段名必须与JSON数据中的键名一致,否则无法正确解析JSON数据。 ### 回答2: Unity是一款跨平台的游戏开发引擎,它可以方便地读取和解析JSON数据。在Unity中,我们可以使用C#的JsonUtility类来实现对JSON数据的读取。 首先,我们需要将JSON数据保存在Unity项目中的某个位置,比如在Assets文件夹下创建一个名为"Data"的文件夹,并将JSON文件放入其中。接下来,我们就可以使用JsonUtility来读取和解析JSON数据了。 首先,需要创建一个类来存储JSON数据的结构。假设我们有一个名为"PlayerInfo"的类来存储玩家信息: ```csharp [System.Serializable] public class PlayerInfo { public string playerName; public int playerScore; } ``` 接下来,在读取JSON数据的脚本中,我们可以使用JsonUtility类来读取和解析JSON数据。假设我们将JSON文件命名为"player.json",并放在"Data"文件夹中: ```csharp using UnityEngine; using System.IO; public class JSONReader : MonoBehaviour { void Start() { // 读取JSON文件的路径 string filePath = Path.Combine(Application.streamingAssetsPath, "Data/player.json"); // 读取JSON文件的内容 string json = File.ReadAllText(filePath); // 将JSON数据解析到PlayerInfo类的实例中 PlayerInfo playerInfo = JsonUtility.FromJson<PlayerInfo>(json); // 打印解析后的玩家信息 Debug.Log("Player Name: " + playerInfo.playerName); Debug.Log("Player Score: " + playerInfo.playerScore); } } ``` 以上就是使用Unity读取JSON数据的简单示例。需要注意的是,由于JSON文件在Unity的StreamingAssets文件夹中,因此在构建发布版本时,需要将JSON文件复制到构建目标的对应文件夹中,才能在运行时正确读取JSON数据。 ### 回答3: Unity是一个游戏开发引擎,可以用于创建各种类型的游戏。在Unity读取JSON数据十分简单和方便。 首先,我们需要将JSON文件加载到游戏中。可以使用Unity的资源加载功能,将JSON文件添加为一个游戏资源,使其可以在游戏中访问。 一旦JSON文件加载到游戏中,我们可以使用JsonUtility类来解析JSON数据。JsonUtility类提供了一些静态方法,可以将JSON字符串转换成可以在Unity中使用的对象。 例如,我们可以使用JsonUtility.FromJson方法将JSON字符串转换成自定义的C#对象。只需传入JSON字符串和目标对象的类型作为参数,就可以得到解析后的对象。 有了解析后的对象,我们就可以通过访问其属性或字段来获取JSON中的数据。如果JSON特别复杂,我们也可以使用嵌套对象来表示JSON的层次结构。 另外,如果我们想将C#对象转换成JSON字符串,可以使用JsonUtility.ToJson方法。只需将目标对象作为参数传入,就可以得到相应的JSON字符串。 总的来说,Unity读取JSON非常简单,只需将JSON文件加载到游戏中,然后使用JsonUtility类来解析JSON数据即可。这样我们就可以轻松地在Unity中使用JSON数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值