向大家致以问候。我正在用对象(Tiles,Obstacles,Character)创建一个Level。我遇到了问题。序列化成功完成,但我得到空列表。我想序列化并保存每个对象的属性。例如:
public class Obstacle
{
public Texture2D ob_tex;
public Rectangle ob_rec;
public bool ob_clic;
Obstacle() { } // Create Constructor
}
我使用此代码保存级别:
public class Level
{
public List<Obstacle> obstacles;
public LevelFile levelfile;
public Level()
{
obstacles = new List<Obstacle>();
}
public class LevelFile
{
public List<Obstacle> obstacles;
}
public void Save(String path/*, LevelFile levelfile*/)
{
levelfile = new LevelFile();
levelfile.obstacles = obstacles;
XmlSerializer serializer = new XmlSerializer(typeof(LevelFile));
using (StreamWriter streamWriter = new StreamWriter(path))
{
serializer.Serialize(streamWriter, levelfile);
}
}
}
但我得到一个xml文件,如下所示:
<LevelFile<obstacles /></LevelFile>
没有任何东西(矩形值,纹理和布尔)....
答案 0 :(得分:0)
好吧,根据你的代码你要保存一个新的LevelFile(),它有一个障碍成员,它是一个列表,你从Level()构造函数中的障碍成员设置,这是一个空列表。因此XML是正确的,您输出的文件带有一个空列表,显示为空标记。
所以看起来你的代码是正确的。如果您在构造函数中添加障碍物或保存,您将看到它实际上正常工作:
public Level()
{
obstacles = new List<Obstacle>
{
new Obstacle { /* set your properties here */ }
};
}