C# 在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中
我一直在尝试打印一个JSON对象,其中包含另一个对象以及嵌套JSON对象的本机c#变量。如果没有自定义对象,对象可以很好地打印,但是,添加自定义对象后,它只打印内部对象InstanceID。这是代码,我试图找到一个解决方案,但我没有看到类似的问题C# 在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中,c#,json,unity3d,C#,Json,Unity3d,我一直在尝试打印一个JSON对象,其中包含另一个对象以及嵌套JSON对象的本机c#变量。如果没有自定义对象,对象可以很好地打印,但是,添加自定义对象后,它只打印内部对象InstanceID。这是代码,我试图找到一个解决方案,但我没有看到类似的问题 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Character : MonoBehaviour { p
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character : MonoBehaviour
{
public string name, char_class, race, alignment;
public int hp, xp, armor, speed;
public List<string> itemList = new List<string>();
public Abilities abilities;
public string SaveToString()
{
return JsonUtility.ToJson(this);
}
}
public class Abilities : MonoBehaviour
{
public int strength, dexterity, intelligence, constitution, wisdom, charisma;
}
但我正试图让它在另一个JSON打印输出中包含用于能力对象的详细能力JSON选项卡。尝试将
[Serializable]
添加到能力类中。您的Character
类可能具有隐含的序列化,因为它是调用类
更多信息请点击此处:
或者,您可以实现一些更广泛使用的功能,比如(在C#中,不特别评论Unity3D)。不过,现在还不确定在Unity中实现第三方依赖关系有多容易
编辑:
OP的解决方案似乎是:
向每个自定义类添加[Serializable]
从monobhavior
中删除继承,这是一个庞大的基类,可能是这里的最终罪魁祸首李>
不幸的是,在第一个类中添加Serializable之后,这两个类并没有改变任何东西。如何摆脱单一行为
继承?System.Serializable
标志真的应该起作用,可能只是要弄清楚为什么JsonUtility拒绝正确遍历链。就是这样!!一定是冲突什么的,非常感谢!哈哈,不用担心。这种不公正让我很生气,所以我现在已经下载了90%的Unity安装程序来做一些测试了。我想我可以把今天剩下的时间都带回来:)
{"name":"test","char_class":"Barbarian","race":"Dragonborn","alignment":"Lawful Good","hp":0,"xp":12,"armor":1,"speed":123,"itemList":[],"abilities":{"instanceID":0}}