IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity LitJson的读写使用 -> 正文阅读

[游戏开发]Unity LitJson的读写使用

工作过程中使用Json进行数据的传递以及整理,是极为常见的。在工作之余,制作了一个小的Demo,帮助新手快速的了解Json的读写;

LitJson的常规使用,主要是如下函数?

JsonMapper.ToJson()

JsonMapper.ToObject()

JsonReader

JsonWriter

JsonData

使用Litjson插件,具体的下载地址,请自行百度,我也是百度来的下载链接;

下载好插件后,将其导入Unity 放在Pluing文件夹下

现在桌面新建一个Text文档 在里面写入需要加载的Json?

json的格式,推荐一个链接给大家,可以在线解析,查看自己编写的json文件是否正确,并且,可生成C#实体

JSON在线解析及格式化验证 - JSON.cnhttps://www.json.cn/json/jsononline.html

写好后保存UTF-8格式? 将文件后缀改为json

?

在unity 中新建一个StreamingAssets文件夹,将文件拖入文件夹中

streamingAssets文件夹中的文件,用来做读写测试,打包后文件是只读文件,不可写

如果需要打包后,可读可写,请自行更换到系统文件夹

下面我们来开始编写 读写脚本

代码已作详尽注释,不在赘述,直接附上代码

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using System.Text;
using LitJson;

#region C#实体
public class StudentItem
{
    /// <summary>
    /// 学号
    /// </summary>
    public int StuNum { get; set; }
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name { get; set; }
    /// <summary>
    /// 生命值
    /// </summary>
    public int HP { get; set; }
}

public class Root
{
    /// <summary> 
    /// 数据列表
    /// </summary>
    public List<StudentItem> Student { get; set; }
}
#endregion
public class ReadJson : MonoBehaviour
{
    /// <summary>
    /// 私有列表,用来存储学生数据
    /// </summary>
    private List<StudentItem> _StudentData;
    /// <summary>
    /// 文件地址
    /// </summary>
    string path = Application.streamingAssetsPath + "/Test.json";
    void Start()
    {     
        ReadJsonData();
        SaveJson(path);
        Debug.Log("修改好的json数据");
        ReadJsonData();
    }
    /// <summary>
    /// 写入并存储Json
    /// </summary>
    void SaveJson(string path)
    {
        StreamReader streamReader = new StreamReader(path);
        JsonReader js = new JsonReader(streamReader);
        Root r = JsonMapper.ToObject<Root>(js);//读取json初始数据
        streamReader.Close();//关闭文件
        streamReader.Dispose();//释放内存
        ChangeJsonData();
        r.Student = _StudentData;
        string studentJsonData = JsonMapper.ToJson(r);//转换成Json数据
        StreamWriter sw = new StreamWriter(path);//写入streamingAssets文件夹下的文件中
        sw.Write(studentJsonData);
        sw.Close();//关闭文件
        
    }
    private void ChangeJsonData()
    {
        for (int i = 0; i < _StudentData.Count; i++)//循环遍历打印
        {
            switch (i)
            {
                case 0:
                    _StudentData[i].Name = "李四";
                    _StudentData[i].HP = 80000;
                    break;
                case 1:
                    _StudentData[i].Name = "张三";
                    _StudentData[i].HP = 70;
                    break;
                default:
                    break;
            }
        }
        if (_StudentData.Count<=2)
        {
            AddData(3, "王五", 900);
        }      
    }
    /// <summary>
    /// 增加数据
    /// </summary>
    /// <param name="stuNum">学号</param>
    /// <param name="name">姓名</param>
    /// <param name="hp">生命值</param>
    private void AddData(int stuNum , string name , int hp)
    {
        StudentItem student = new StudentItem();
        student.StuNum = stuNum;
        student.Name = name;
        student.HP = hp;
        _StudentData.Add(student);
    }
    /// <summary>
    ///文件写入 (如果使用File来进行写入操作就调用此函数) 
    /// </summary>
    /// <param name="path">文件写入地址</param>
    /// <param name="content">文件写入内容</param>
    public void WriteFile(string path, string content)
    {
        if (Directory.Exists(path))
        {
            File.Delete(path);
        }
        File.WriteAllText(path, content);
    }
    /// <summary>
    /// 读取json数据
    /// </summary>
    void ReadJsonData()
    {
        StreamReader streamReader = new StreamReader(path);
        JsonReader js = new JsonReader(streamReader);//读取目标地址的文件
        Root r = JsonMapper.ToObject<Root>(js);//读取json数据
        _StudentData = r.Student;
        for (int i = 0; i < _StudentData.Count; i++)//循环遍历打印
        {
            Debug.Log("学号   " + _StudentData[i].StuNum + "姓名   " + _StudentData[i].Name + "生命值   " + _StudentData[i].HP);
        }
        streamReader.Close();
        streamReader.Dispose();//关闭文件,并释放内存 
    }
}

在场景中新建一个空物体,将脚本挂在空物体上,我们来看一下运行Debug

我们再打开json文件看一下?

已达到我们的预期效果,能够正常的进行读写,以及新增数据

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 12:05:56  更:2021-10-15 12:07:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 2:53:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码