Are*_* Li 5 c# json unity-game-engine
我尝试在Unity 5.3中使用新的JSON序列化功能,并通过参考Unity网站上提供的用法示例编写了以下代码.我做的唯一不同的部分是使用setter和getter而不是使它们成为纯公共变量来创建对象类的变量(在我的例子中是FruitItem类).通过这样做,我只有一对没有任何内容的大括号.但是,如果我删除getter和setter并使类变量成为纯公共变量,我将能够得到正确的结果.任何人都可以向我提供任何暗示,为什么会发生这种情况?在此先感谢您的帮助.
正常运行的代码:
using UnityEngine;
using UnityEditor;
using System.Collections;
using System;
public class testJson : MonoBehaviour {
// Use this for initialization
void Start () {
FruitItem myFruit = new FruitItem (){ name = "apple", price = 52, quantity = 53 };
string jsonString = JsonUtility.ToJson (myFruit);
Debug.Log (jsonString);
}
// Update is called once per frame
void Update () {
}
}
[Serializable]
public class FruitItem{
//using the pure public variables and the output will be:
//{"name":"apple","quantity":53,"price":52}
public string name;
public int quantity;
public int price;
}
Run Code Online (Sandbox Code Playgroud)
代码无法正常工作:
using UnityEngine;
using UnityEditor;
using System.Collections;
using System;
public class testJson : MonoBehaviour {
// Use this for initialization
void Start () {
FruitItem myFruit = new FruitItem (){ name = "apple", price = 52, quantity = 53 };
string jsonString = JsonUtility.ToJson (myFruit);
Debug.Log (jsonString);
}
// Update is called once per frame
void Update () {
}
}
[Serializable]
public class FruitItem{
//using the pure public variables and the output will be:
//{}
public string name{ get; set;}
public int quantity{ get; set;}
public int price{ get; set;}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ias 18
Unity无法序列化属性.
http://docs.unity3d.com/ScriptReference/SerializeField.html
使用的序列化系统可以执行以下操作:
只有Unity可以序列化的类型,您的字段才会序列化:
可序列化类型是:
| 归档时间: |
|
| 查看次数: |
11725 次 |
| 最近记录: |