unity中实现json序列化
1,当涉及到游戏保存的时候,这个时候我们需要对当前游戏的物体进行保存,主要包括位置,血量等其他属性的保存,
但是unity暂时未提供这个功能,这个时候我们需要用到json,利用json序列化,将物体的信息存储为json字符串,然后通过
PlayerPrefs存到手机的存储中,下次就可以直接读取playerprefs恢复之前的游戏状态
相关操作如下:
using Newtonsoft.Json;
public static string geneateJsonStringFromCluster(GameObject targetcluster)
{
JsonCluster jcstr = new JsonCluster();
Clustercontroller cc = targetcluster.GetComponent<Clustercontroller>();
jcstr.price = cc.getAllThePrice();
foreach (var item in cc.clusterdic)
{
Baseattribute bat = item.Value.GetComponent<Baseattribute>();
string nodetype = bat.getNodeType();
if (nodetype == "incubator")
{
IncubatorJson icbt = new IncubatorJson();
bat.toBaseJson<IncubatorJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "generator")
{
GeneratorJson icbt = new GeneratorJson();
bat.toBaseJson<GeneratorJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "defender")
{
DefenderJson icbt = new DefenderJson();
bat.toBaseJson<DefenderJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "engine")
{
EngineJson icbt = new EngineJson();
bat.toBaseJson<EngineJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "pulser")
{
PulserJson icbt = new PulserJson();
bat.toBaseJson<PulserJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "cloner")
{
ClonerJson icbt = new ClonerJson();
bat.toBaseJson<ClonerJson>(icbt);
jcstr.optionNodeList(icbt);
}
if (nodetype == "attacker")
{
AttackerJson icbt = new AttackerJson();
bat.toBaseJson<AttackerJson>(icbt);
jcstr.optionNodeList(icbt);
}
}
return JsonConvert.SerializeObject(jcstr);
}
然后我们读取的时候 只需要就好了
JsonConvert.DeserializeObject<JsonCluster>(tempjsoncode);
浙公网安备 33010602011771号