在使用LitJson时,会发现不支持Unity的Vector3等类型,更为奇怪的是在Unity的Editor模式下是正常的,在真机设备上不行了,今天查看源码终于找到原因了。 LitJson本身为支持Unity已经定义了一个类UnityTypeBindings,局部代码如下:
#if UNITY_EDITOR
[UnityEditor.InitializeOnLoad]
#endif
public static class UnityTypeBindings {
static bool registerd;
static UnityTypeBindings(){
Register();
}
就是因为在UNITY_EDITOR下加了标签[UnityEditor.InitializeOnLoad],所以在编辑器模式下支持Vector3等类型,因此只需要在项目加上如下代码即可:
UnityTypeBindings.Register()
参照以下注册方法,可实现自定义类型的Json序列化支持
Action<Vector2,JsonWriter> writeVector2 = (v,w) => {
w.WriteObjectStart();
w.WriteProperty(“x”,v.x);
w.WriteProperty(“y”,v.y);
w.WriteObjectEnd();
};
JsonMapper.RegisterExporter
writeVector2(v,w);
});
参考资料:
LitJson官网:http://lbv.github.io/litjson/