一、使用自带API

//首先定义一个类(序列化System.Serializable)
[System.Serializable]
public class Settings
{
//下面都是需要json配置的数据(json文件里面的数据名要和类里面的名字相同,不然读取不到)
    public float width;
    public float height;
    public float kinectMin;
    public float kinectMax;
    public int kinectTracked;
}
//读取
public class ReadSettings: MonoBehaviour
{
private Settings settings ;
 void Start()
    {
       string path=json文件放的地址一般放到(StreamingAssets)文件夹下
      //eg: string path = Application.streamingAssetsPath + "/json/Settings.json";
       string json = File.ReadAllText(path);
       settings = JsonUtility.FromJson<Settings>(json);
    }
}

 
 //调用
float width=settings .width;(下同)

二、使用的是Litjson

下载链接:https://pan.baidu.com/s/17a82cgciCUIswZwidbBTjQ
提取码:tlqe
Litjson放入文件夹Plugins下
在这里插入图片描述
1、无嵌套:
在这里插入图片描述

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

public class JsonManager 
{
    private static JsonManager instance;
    public static JsonManager Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new JsonManager();
            }
            return instance;
        }
    }

    //读取
    public T LoadJsonDatas<T>(string path)
    {
        StreamReader sr = new StreamReader(path);
        string readContent = sr.ReadToEnd();
        T jsonDatas = JsonMapper.ToObject<T>(readContent);
        sr.Close();
        sr.Dispose();
        return jsonDatas;
    }
    //
    public T LoadFromJsonDate<T>(string UnityAssetSubPath)
    {
        try
        {
            string filePath = Application.dataPath + UnityAssetSubPath;
            T t = JsonMapper.ToObject<T>(File.ReadAllText(filePath));
            if (t == null)
            {
                Debug.Log("JsonDate=Null");
                return default(T);
            }
            return t;
        }
        catch (Exception E)
        {
            Debug.LogError(E);
            return default(T);
        }
    }

    //保存
    public string SaveJsonDate<T>(T t, string UnityAssetSubPath)
    {
        string filePath = Application.dataPath + UnityAssetSubPath;
        FileInfo file = new FileInfo(filePath);
        string jsonstr = JsonMapper.ToJson(t);
        using (System.IO.StreamWriter thefile = new StreamWriter(filePath, false, Encoding.UTF8))
        {
            thefile.WriteLine(jsonstr);
        }
        //在编辑器下
#if UNITY_EDITOR
        UnityEditor.AssetDatabase.Refresh();
#endif
        return jsonstr;
    }


}

调用方式:

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;

public class JsonManagerEvent : MonoBehaviour
{
    PlayDate playDate;
    public string ManAndWoMan;
    public string Name;
    public string ID;
   
    public int Age;
    public string Birthday;
    void Start()
    {
        playDate = new PlayDate();
    }

    // Update is called once per frame
    void Update()
    {
      
        if (Input.GetKeyDown(KeyCode.R))
        {
        //读取数据
            PlayDate playDate = JsonManager.Instance.LoadFromJsonDate<PlayDate>("/StreamingAssets/Json/Play.json");
            UnityEngine.Debug.Log(playDate.ManAndWoMan);
            UnityEngine.Debug.Log(playDate.ID);
            UnityEngine.Debug.Log(playDate.Name);
            UnityEngine.Debug.Log(playDate.Age);
            UnityEngine.Debug.Log(playDate.Birthday);
        }
    }
    [ContextMenu("保存Json数据")]
    public void SaveDate()
    {
        playDate.ManAndWoMan = ManAndWoMan;
        playDate.Name = Name;
        playDate.ID = ID;
        playDate.Age = Age;
        playDate.Birthday = Birthday;
        JsonManager.Instance.SaveJsonDate(playDate, "/StreamingAssets/Json/Play.json");
    }
}
[System.Serializable]
public class PlayDate
{
    public string ManAndWoMan;
    public string ID;
    public string Name;
    public int Age;
    public string Birthday;

}

在这里插入图片描述
2、有嵌套:

在这里插入图片描述
1、如果不了解嵌套类型怎么写成可视化的对象可以参考这篇内容
我是使用相对应的名称就可以获取到对应的数据内容了

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐