将脚本挂载到一个Cube上然后序列化和反序列化Json
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;
using LitJson;
public class JsonTest : MonoBehaviour {
void Start () {
}
public void SaveJson()
{
MyTransform trans = new MyTransform();
trans.position = new Pos()
{
x = this.transform.position.x,
y = this.transform.position.y,
z = this.transform.position.z
};
trans.rotation = new Pos()
{
x = this.transform.rotation.x,
y = this.transform.rotation.y,
z = this.transform.rotation.z
};
trans.scale = new Pos()
{
x = this.transform.localScale.x,
y = this.transform.localScale.y,
z = this.transform.localScale.z
};
//序列化
//转化Json
string json = JsonMapper.ToJson(trans);
//存储到磁盘
StreamWriter sw = new StreamWriter(Application.dataPath + "/Json/Json_1.json");
//写入Json
sw.Write(json);
//关闭流
sw.Close();
//刷新资源
AssetDatabase.Refresh();
}
void Update () {
//读取文件
StreamReader sr = new StreamReader(Application.dataPath + "/Json/Json_1.json");
//读取文档内容
string json = sr.ReadToEnd();
//进行反序列化
MyTransform mt = JsonMapper.ToObject <MyTransform>(json);
this.transform.position = new Vector3() { x = (float)mt.position.x, y = (float)mt.position.y, z = (float)mt.position.z };
this.transform.eulerAngles = new Vector3() { x = (float)mt.rotation.x, y = (float)mt.rotation.y, z = (float)mt.rotation.z };
this.transform.localScale = new Vector3() { x = (float)mt.scale.x, y = (float)mt.scale.y, z = (float)mt.scale.z };
//关闭文件流
sr.Close();
}
}
public class Pos
{
public double x;
public double y;
public double z;
}
public class MyTransform
{
public Pos position;
public Pos rotation;
public Pos scale;
}