Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中_C#_Json_Unity3d - Fatal编程技术网

C# 在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中

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

我一直在尝试打印一个JSON对象,其中包含另一个对象以及嵌套JSON对象的本机c#变量。如果没有自定义对象,对象可以很好地打印,但是,添加自定义对象后,它只打印内部对象InstanceID。这是代码,我试图找到一个解决方案,但我没有看到类似的问题

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}}