分析一下可以定义的
1、序号,用来区分题目数,每个题有唯一的序号
2、题目,就是下图的Q
3、预设的回答,下图的A

分析完我可以知道有三个字段,分别是int index、string Q、string A。
第一行写字段,下面再写数据

可以看到生成的Json文件是这样的

看着稍微有点乱,可以用格式化工具调整一下
这是我常用的格式化工具

这样就可以清晰分辨我们的题目和预设回答了,一些小调整也可以直接在这里处理
新建一个txt文本,把刚刚生成的数据全部粘贴进文本里,并把后缀改成.json
这样就是一个合格的Json文件了

还是刚刚那个网站,找到Json转C#实体类,把你的Json文件丢进去他就能帮你生成一个C#类

在Unity里新建一个QAData类,复制这些生成的这些就好了(生成的一般都是Root,改成自己的类)。

- using Newtonsoft.Json;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Events;
- using UnityEngine.Networking;
-
- public class Test : MonoBehaviour
- {
- void Start()
- {
- StartCoroutine(LoadJson(Application.streamingAssetsPath + "/QA.json",JsonHandle));
- }
-
- ///
- /// 处理Json数据
- ///
- void JsonHandle(string jsonData)
- {
- Debug.Log(jsonData);
- QAData qAData = JsonConvert.DeserializeObject
(jsonData); -
- Debug.Log(" 共有" + qAData.QA.Count + "题");
- foreach (var item in qAData.QA)
- {
- Debug.Log(item.index);
- Debug.Log(item.Q);
- Debug.Log(item.A);
- }
-
- }
-
- ///
- /// 读取Json数据
- ///
- ///
- ///
- ///
- IEnumerator LoadJson(string path,UnityAction<string> action = null)
- {
- // 提取Json文件
- UnityWebRequest www = UnityWebRequest.Get(path);
- yield return www.SendWebRequest();
-
- if (www.result == UnityWebRequest.Result.Success)
- {
- string jsonString = www.downloadHandler.text;
- action?.Invoke(jsonString);
- }
- else
- {
- Debug.Log("读取失败");
- }
- }
- }
这样就全部拆出来了,答题系统也是一样的思路。

这样做的好处是,当需要外部去修改题库时也无需重新打包,直接改Json文件就好了