【发布时间】:2016-07-11 10:47:42
【问题描述】:
我正在尝试使用 JSON 序列化一组自定义 Monobehaviours。我知道它不能直接完成,所以我使用包装类并对其进行序列化。
这是包装对象
[System.Serializable]
public class WavesCollection {
public Wave[] waves;
}
这就是被包装的对象(只有它的重要部分)
[System.Serializable]
public class Wave : MonoBehaviour {
[SerializeField]public float[] AppearTimes;//第n个敌人出现的时候;
[SerializeField]public Vector2 [] position;//第n个敌人应该出现在哪里;
[SerializeField]public EnemyType[] EnemiesToAppear;//应该出现什么敌人
}
wavesArray = new Wave[] {thisWave, thisWave, thisWave};
WavesCollection 集合 = 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}]}
谁能给我一些关于我做错了什么的指示?
【问题讨论】:
-
你的例外是什么?
-
不抛出异常。问题是错误的东西被序列化了。
-
为什么你从 MonoBehaviour 继承 Wave 类?请尝试不继承。
-
我已经设法直接序列化 Wave 对象,例如将单个 Wave 对象转换为单个 JSON,并且效果很好。当我尝试序列化 Wave 对象数组时,问题就来了。因此,我相信从 MonoBehaviour 继承应该不会引起问题。
标签: c# json serialization unity3d mono