Unity加载Json文件

一、准备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”编码格式,然后点击保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值