json的存储在不同平台存储的路径是不一样的,具体路径如下
对于这些路径有些是可读可写的,不同平台有不同的路径,首先我们先读取,unity有个自带的JsonUtility的类,里面包含了存储的方法
同时也有自带的存储的方法
public class JsonData
{
public List<PlayerMessage> lsPlayerMessage;
}
//玩家信息
[Serializable]
public class PlayerMessage
{
public int PlayerId;
public string PlayerName;
public List<EquipMessage> PlayerEquip;
}
//装备信息
[Serializable]
public class EquipMessage
{
public int EquipId;
public string EquipName;
}
//保存json文件路径
string JsonPath()
{
return Application.streamingAssetsPath + “/JsonTest.json”;
}
初始化数据
//初始化json数据,用类去接收数据,在进行反编译
void InitJsonData()
{
jsonData.lsPlayerMessage = new List();
PlayerMessage playerMessage = new PlayerMessage();
playerMessage.PlayerId = 1;
playerMessage.PlayerName = “Json”;
playerMessage.PlayerEquip = new List();
EquipMessage equipMessage = new EquipMessage();
equipMessage.EquipId = 101;
equipMessage.EquipName = “Gun”;
playerMessage.PlayerEquip.Add(equipMessage);
jsonData.lsPlayerMessage.Add(playerMessage);
}
//保存json数据到本地
void SaveJson()
{
//如果本地没有对应的json 文件,重新创建
if (!File.Exists(JsonPath()))
{
File.Create(JsonPath());
}
string json = JsonUtility.ToJson(jsonData, true);
File.WriteAllText(JsonPath(), json);
Debug.Log("保存成功");
}
//从本地读取json数据
void ReadJson()
{
if (!File.Exists(JsonPath()))
{
Debug.LogError(“读取的文件不存在!”);
return;
}
string json = File.ReadAllText(JsonPath());
JsonData jsonTemp = new JsonData();
jsonTemp = JsonUtility.FromJson(json);
Debug.Log(“玩家数量:” + jsonTemp.lsPlayerMessage.Count);
for (int i = 0; i < jsonTemp.lsPlayerMessage.Count; i++)
{
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerId);
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerName);
for (int j = 0; j < jsonTemp.lsPlayerMessage[i].PlayerEquip.Count; j++)
{
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipId);
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipName);
}
}
}