我有一个非常复杂的情况,我想要一些建议来解决这种情况。所以我之前问了这个问题:Unity save everything (snapshot)
我正在尝试将所有内容序列化为JSON。虽然序列化一切我有一些要求。
我成功地序列化了基本的统一类型(transform / meshrenderer等)。但是我现在正在编写代码来序列化自定义组件。为此,我使用反射。如果类只有主类型(string,int,float等),则此代码有效。但是我仍面临两个挑战。
目前我想主要就第一点提出建议。我开发了这段代码: Type是我之前获得的字符串
if (type.Contains("List"))
{
value = serializeListVariable(singular.GetValue(comp));
}
然后这是应该序列化列表的方法。通过调试,我可以看到对象在values变量中。但是,它们不会转换为JSON,只返回{}。在第一次迭代中,我想动态保存主要类型的列表。但是后来我想用自定义类来做这件事。如果我使用getvalues进行tostring,我之后可以获得正确的JSON字符串,但是我再次对这些自定义类的tostring方法没有影响......
private string serializeListVariable(object listobject)
{
PropertyInfo listitems = listobject.GetType().GetProperty("Item");
int listcount = (int)listobject.GetType().GetProperty("Count").GetValue(listobject, null);
var values = new object[listcount];
for (int i =0; i < listcount; i++) {
values[i] = listitems.GetValue(listobject, new object[] { i });
}
string serializedlist = JsonHelper.ToJson(values);
return serializedlist;
}
调用的JSON帮助器方法:
public static string ToJson<T>(T[] array)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return JsonUtility.ToJson(wrapper);
}
提到的包装类:
[Serializable]
private class Wrapper<T>
{
public T[] Items;
}
希望你们中的一些人知道解决这个问题。
提前致谢!
答案 0 :(得分:0)
在Unity中使用LitJSON插件。
return JsonMapper.ToJson(anyClassOrList);