想要将对象转换为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
}
支持的类型
JSON序列化器API支持具有
MonoBehaviour
属性的任何ScriptableObject
子类,[Serializable]
子类或普通类或结构。将对象传递给标准Unity序列化程序进行处理时,将应用与检查器中相同的规则和限制:仅Unityy序列化字段;和不支持Dictionary<>
之类的类型。Unity不支持将其他类型直接传递给API,例如原始类型或数组。如果需要转换它们,请将它们包装在某种类或结构中。
所以您想删除所有的{get; set;}
以便使用字段而不是属性
[Serializable]
public class Save
{
public Levels PlayerLvl;
public int Kills;
}