Я пытаюсь внедрить систему XML для элементов в моей игре .. но я просто не могу заставить ее работать. Я использую Monogame и конвейер контента, который поставляется вместе с ним. Я создал класс инвентаря и класс предметов.Сериализация Monogame XML с конвейером контента
Вот фрагменты из класса Inventory (которые имели бы сериализации):
public class Inventory
{
[XmlElement("Item")]
public static List<Item> itemList;
public Inventory (Vector2 _position)
{
itemList = new List<Item>();
}
public void LoadContent()
{
XmlSerializer deserializer = new XmlSerializer(typeof(Item));
TextReader reader = new StreamReader("Content/Items/itemEntities.xml");
object obj = deserializer.Deserialize(reader);
Inventory XmlData = (Inventory)obj;
reader.Close();
}
}
И тогда я creaded файл XML:
<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:ns="Microsoft.Xna.Framework">
<Asset Type="Game.Item[]">
<Item>
<itemType>Weapon</itemType>
<itemRarity>Rare</itemRarity>
<itemID>0001</itemID>
<positionID>
<X>1</X>
<Y>1</Y>
</positionID>
<name>The sword</name>
<description>Description</description>
</Item>
<Item>
<itemType>Equipment</itemType>
<itemRarity>Uncommon</itemRarity>
<itemID>0002</itemID>
<positionID>
<X>1</X>
<Y>1</Y>
</positionID>
<name>The Item</name>
<description>Description</description>
</Item>
<Item>
<itemType>Drone</itemType>
<itemRarity>Common</itemRarity>
<itemID>0003</itemID>
<positionID>
<X>1</X>
<Y>1</Y>
</positionID>
<name>The Drone</name>
<description>Description</description>
</Item>
</Asset>
</XnaContent>
Сейчас проблема заключается в том, что я получаю следующая ошибка:
error: Importer 'XmlImporter' had unexpected failure!
Microsoft.Xna.Framework.Content.Pipeline.InvalidContentException: Could not resolve type 'Game.Item[]'.
Я прочитал некоторые другие вопросы здесь, которые я должен был бы сделать ссылка, но я просто не могу найти способ сделать это. В проводнике решений я вижу ссылки, но когда я нажимаю кнопку «Добавить», я ничего не вижу в проектах, там есть только стандартные материалы, такие как «Рамки» и т. Д. О, и у меня есть constuctor без аргументов в классе Item, так что это должно быть хорошо.
Еще одна вещь. Я попытался написать список элементов в файл XML, и он отлично сработал.
Заранее благодарен!
Возможно [этот учебник] (http://dylanwilson.net/creating-custom-content-importers-for-the-monogame-pipeline) поможет. Извините, у меня нет времени, чтобы написать правильный ответ. – craftworkgames
@craftworkgames У меня есть кое-что сделанное, но я не знаю, как сделать кучу вещей. Что мне нужно в писателе вместо FileFileData и мне нужна обработка, если я просто хочу создавать объекты с помощью XML-файла? Я немного новичок в этом ... – bambucha
Я не понимал, что вы подразумеваете под «» Еще одна вещь. Я попытался написать список элементов в XML-файл, и он отлично сработал. »« - что сработало правильно? можно ли десериализовать отдельные экземпляры вашего типа? –