Unity 中的 JSON 序列化问题

本文关键字:问题 序列化 JSON 中的 Unity | 更新日期: 2023-09-27 17:56:13

我正在尝试使用JSON序列化自定义单行为数组。我知道它不能直接完成,所以我使用包装类并对其进行序列化。

这是包装器对象

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


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

[System.Serializable]public 
class Wave : MonoBehavior { [
SerializeField]public float[] AppearTimes;//此时如果出现第 n 个敌人;
[SerializeField]public Vector2[] 位置;//第 n 个敌人应该出现在哪里;
[SerializeField]public EnemyType[] EnemiesToAppear;//什麼敵人應該出現
}



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);
字符串 json = JsonUtility.ToJson(collection);
西 南部。WriteLine(json);
西 南部。关闭();


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

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


谁能给我一些关于我做错了什么的指示?

Unity 中的 JSON 序列化问题

我在继承带有可脚本对象的基类(在您的情况下为 Wave)时遇到了同样的问题,这给了我同样的问题。我可以放入单个对象并将其很好地传递,但是在列表中得到了有问题的实例 id。我删除了基类上所有形式的继承,它起作用了。