一、使用自带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、如果不了解嵌套类型怎么写成可视化的对象可以参考这篇内容
我是使用相对应的名称就可以获取到对应的数据内容了