以XML格式保存级别

时间:2011-04-20 22:16:52

标签: c# xna

向大家致以问候。我正在用对象(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>

没有任何东西(矩形值,纹理和布尔)....

1 个答案:

答案 0 :(得分:0)

好吧,根据你的代码你要保存一个新的LevelFile(),它有一个障碍成员,它是一个列表,你从Level()构造函数中的障碍成员设置,这是一个空列表。因此XML是正确的,您输出的文件带有一个空列表,显示为空标记。

所以看起来你的代码是正确的。如果您在构造函数中添加障碍物或保存,您将看到它实际上正常工作:

public Level()
{
    obstacles = new List<Obstacle>
        {
            new Obstacle { /* set your properties here */ }
        };
}