一、准备Json文件
本文中Json文件全称为:JsonData.json
内容及格式如下:
{
"CaseItem":
[
{
"caseNum":1,
"caseName":"电子主机故障",
"caseStep":5,
"personNum":2,
"time":"1小时",
"step":[
{
"stepNum":1,
"stepDescription":"1、排除故障第一步",
"tipContent":"轻拿轻放!",
"sCamPos":"Vector3(0,1,-10)",
"sCamRot":"Vector3(0,0,0)",
"pictures":[
{
"picName":"step1_图片0",
"picDescription":"step1_图片0描述"
},
{
"picName":"step1_图片1",
"picDescription":"step1_图片1描述"
}
],
"modelInfo":[
{
"picIndex":1,
"tweenItem":[
{
"tweenType":"Move&Rot",
"modelSceneName":"Cube",
"modelRealName":"立方体",
"originalPos":"0,0,0",
"originalRot":"0,0,0",
"targetPos":"0,4,0",
"targetRot":"0,120,0",
"tweenTime":2
},
{
"tweenType":"Move",
"modelSceneName":"Sphere",
"modelRealName":"球体",
"originalPos":"0,0,0",
"originalRot":"0,0,0",
"targetPos":"5,0,0",
"targetRot":"0,0,0",
"tweenTime":2
}
]
}
]
}
]
}
]
}
二、封装Json数据模板
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
/// <summary>
/// Json数据模板
/// </summary>
[Serializable]
public class JsonData
{
public List<CaseItem> CaseItem;
}
/// <summary>
/// 案例基本信息
/// </summary>
[Serializable]
public class CaseItem
{
/// <summary>
/// 案例序号
/// </summary>
public int caseNum;
/// <summary>
/// 案例名称
/// </summary>
public string caseName;
/// <summary>
/// 案例步骤
/// </summary>
public int caseStep;
/// <summary>
/// 人物数量
/// </summary>
public int personNum;
/// <summary>
/// 时间
/// </summary>
public string time;
/// <summary>
/// 案例所有步骤
/// </summary>
public List<Step> step;
}
/// <summary>
/// 步骤信息
/// </summary>
[Serializable]
public class Step
{
/// <summary>
/// 步骤序号
/// </summary>
public int stepNum;
/// <summary>
/// 步骤描述
/// </summary>
public string stepDescription;
/// <summary>
/// 提示信息
/// </summary>
public string tipContent;
/// <summary>
/// 摄像机位置
/// </summary>
public string sCamPos;
/// <summary>
/// 摄像机旋转
/// </summary>
public string sCamRot;
/// <summary>
/// 当前步骤所有图片
/// </summary>
public List<Picture> pictures;
/// <summary>
/// 模型信息
/// </summary>
public List<ModelInfo> modelInfo;
}
/// <summary>
/// 图片信息
/// </summary>
[Serializable]
public class Picture
{
/// <summary>
/// 图片名称
/// </summary>
public string picName;
/// <summary>
/// 图片描述
/// </summary>
public string picDescription;
}
/// <summary>
/// 模型信息
/// </summary>
[Serializable]
public class ModelInfo
{
/// <summary>
/// 当前动作对应的图片索引
/// </summary>
public int picIndex;
/// <summary>
/// 当前动作
/// </summary>
public List<TweenItem> tweenItem;
}
/// <summary>
/// 动作项
/// </summary>
[Serializable]
public class TweenItem
{
/// <summary>
/// 动作类型
/// </summary>
public string tweenType;
/// <summary>
/// 模型在场景中的名称
/// </summary>
public string modelSceneName;
/// <summary>
/// 模型真正的名称
/// </summary>
public string modelRealName;
/// <summary>
/// 原始位置
/// </summary>
public string originalPos;
/// <summary>
/// 原始旋转
/// </summary>
public string originalRot;
/// <summary>
/// 目标位置
/// </summary>
public string targetPos;
/// <summary>
/// 目标旋转
/// </summary>
public string targetRot;
/// <summary>
/// 动作时间
/// </summary>
public int tweenTime;
}
三、编写数据加载脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 读取json数据
/// </summary>
public class ReadJsonData : MonoBehaviour
{
/// <summary>
/// 单例
/// </summary>
public ReadJsonData Instance;
/// <summary>
/// 保存加载到的json数据
/// </summary>
public JsonData jsonData;
private void Awake()
{
Instance = this;
}
void Start()
{
ReadJson("JsonData");
}
/// <summary>
/// 读取json文件
/// </summary>
/// <param name="path"></param>
public void ReadJson(string path)
{
TextAsset textAsset = Resources.Load<TextAsset>(path);
if(textAsset!=null)
{
JsonData data = JsonUtility.FromJson<JsonData>(textAsset.text);
if (data != null)
{
jsonData = data;
//添加打印代码进行测试
//...
}
}
}
}
四、挂载数据加载脚本
运行程序测试数据读取情况:
五、可能出现的问题及解决办法
1、读取不到数据;
(1)查看json文件路径是否正确,本文是放在Resources文件夹下面的;
(2)json文件编写有错误。
2、读取到的数据出现乱码;
将json文件打开另存为->选择“UTF-8”编码格式,然后点击保存。