Сохранение уровня в XML - PullRequest
0 голосов
/ 21 апреля 2011

Приветствую всех.Я создаю уровень с объектами (плитки, препятствия, персонажа).Я испытываю проблему.Сериализация успешно выполнена, но я получаю пустые списки.Я хочу сериализовать и сохранить атрибуты каждого объекта.Например:

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>

И ничего в нем (значение Rectangle, Texture и bool) ....

1 Ответ

0 голосов
/ 21 апреля 2011

Итак, согласно вашему коду, вы сохраняете новый LevelFile (), в котором есть элемент препятствий - это список, который вы устанавливаете из элемента препятствий в конструкторе Level (), который является пустым списком.Таким образом, XML верен, вы выводите файл с пустым списком, который отображается в виде пустого тега.

Таким образом, похоже, что ваш код правильный.Если вы добавите препятствие в свой список в конструкторе или сохраните, вы увидите, что оно действительно работает правильно:

public Level()
{
    obstacles = new List<Obstacle>
        {
            new Obstacle { /* set your properties here */ }
        };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...