Unity c#jsonUtility函数无法正常工作

问题描述 投票:0回答:1

想要将对象转换为json字符串然后返回。

我的对象:

[Serializable]
public class Save
{
    public Levels PlayerLvl { get; set; }
    public int Kills { get; set; }
}

代码功能:

testfunction(Save savedata) {
    //(int)savedata.PlayerLvl equals 1
    //savedata.Kills equals 5
    string json = JsonUtility.ToJson(savedata);
    debug.log(json) // json equals "{}"
}

当我得到一个json字符串并想将其转换回时也会发生同样的事情:

testFunction(string jsonstring) {
    //jsonstring is a valid json string that equals Save object
    Save savedata = JsonUtility.FromJson<Save>(jsonstring);
    // savedate equals a new Save object without content
}

这里怎么了?


编辑:

我得到的杰森:

{
    "Kills": 5,
    "PlayerLvl": 1
}

枚举级别:

public enum Levels {
    Level1 = 1,
    Level2 = 2
}
c# json unity3d
1个回答
0
投票

参见Manual: JSON Serialization

支持的类型

JSON序列化器API支持具有MonoBehaviour属性的任何ScriptableObject子类,[Serializable]子类或普通类或结构。将对象传递给标准Unity序列化程序进行处理时,将应用与检查器中相同的规则和限制:仅Unityy序列化字段;和不支持Dictionary<>之类的类型。

Unity不支持将其他类型直接传递给API,例如原始类型或数组。如果需要转换它们,请将它们包装在某种类或结构中。

所以您想删除所有的{get; set;}以便使用字段而不是属性

[Serializable]
public class Save
{
    public Levels PlayerLvl;
    public int Kills;
}
© www.soinside.com 2019 - 2024. All rights reserved.