Unity中的JSON序列化问题

时间:2016-07-11 10:47:42

标签: c# json serialization unity3d mono

我尝试使用JSON序列化一系列自定义Monobehaviours。我知道它不能直接完成,所以我使用了包装类并将其序列化。

这是包装器对象

[System.Serializable]  
public class WavesCollection {
public Wave[] waves;
}

这是被包裹的对象(只有它的重要部分)

[System.Serializable]
public class Wave : MonoBehaviour {
[SerializeField]public float[] AppearTimes;//at that time should the n-th enemy appear;
[SerializeField]public Vector2[] positions;//where should the n-th enemy appear;
[SerializeField]public EnemyType[] EnemiesToAppear;//what enemies should appear
}



        wavesArray = new Wave[] {thisWave, thisWave, thisWave};
WavesCollection collection = new WavesCollection();
collection.waves = new Wave[10];
wavesArray.CopyTo(collection.waves, 0);
StreamWriter sw = File.CreateText(WritePath);
string json = JsonUtility.ToJson(collection);
sw.WriteLine(json);
sw.Close();

这是进行序列化的代码。基本上我有一组非空的Wave对象,我将它复制到包装器对象。然后我尝试在文件中写入,输出是

{"waves":[{"instanceID":-99992},{"instanceID":-99992},{"instanceID":-99992},{"instanceID":0},{"instanceID":0},{"instanceID":0},{"instanceID":0},{"instanceID":0},{"instanceID":0},{"instanceID":0}]}

任何人都可以就我的错误给我一些指示吗?

1 个答案:

答案 0 :(得分:0)

我在使用脚本化对象继承我的基类(在你的情况下为Wave)时遇到了同样的问题,这给了我同样的问题。我可以放入一个单独的对象并传递它,但在列表中得到了有问题的实例ID。我删除了基类上的所有形式的继承,并且它有效。