为什么我在Unity 5.3中的对象类中使用setter和getter时返回空的JSON字符串?

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

使用的序列化系统可以执行以下操作:

  • CAN序列化公共非静态字段(可序列化类型)
  • CAN序列化标有[SerializeField]属性的非公共非静态字段.
  • 无法序列化静态字段.
  • 无法序列化属性.

只有Unity可以序列化的类型,您的字段才会序列化:

可序列化类型是:

  • 所有继承自UnityEngine.Object的类,例如GameObject,Component,MonoBehaviour,Texture2D,AnimationClip.
  • 所有基本数据类型,如int,string,float,bool.
  • 一些内置类型,如Vector2,Vector3,Vector4,Quaternion,Matrix4x4,Color,Rect,LayerMask.
  • 可序列化类型的数组
  • 可序列化类型的列表
  • 枚举
  • 结构