C# 使用内容管道的单游戏XML序列化
我一直在尝试为游戏中的项目实现一个XML系统。。但我就是不能让它工作。 我使用的是Monogame及其附带的内容管道。 我创建了一个Inventory类和一个Item类 以下是Inventory类的代码段(具有序列化功能): 我在这里读到了一些其他的问题,我必须做一个参考,但我就是找不到一个方法来做这件事。在解决方案资源管理器中,我可以看到引用,但当我单击“添加”时,我在项目中看不到任何内容,只有框架等标准内容。 哦,我有一个在Item类中没有参数的构造函数,所以应该可以 还有一件事。我曾尝试将项目列表写入XML文件,但效果非常好C# 使用内容管道的单游戏XML序列化,c#,xml,monogame,C#,Xml,Monogame,我一直在尝试为游戏中的项目实现一个XML系统。。但我就是不能让它工作。 我使用的是Monogame及其附带的内容管道。 我创建了一个Inventory类和一个Item类 以下是Inventory类的代码段(具有序列化功能): 我在这里读到了一些其他的问题,我必须做一个参考,但我就是找不到一个方法来做这件事。在解决方案资源管理器中,我可以看到引用,但当我单击“添加”时,我在项目中看不到任何内容,只有框架等标准内容。 哦,我有一个在Item类中没有参数的构造函数,所以应该可以 还有一件事。我曾尝试将
提前谢谢 您需要添加对已编译dll库的引用,这意味着您的类型需要在外部项目中定义 创建另一个编译为dll的项目,在其中定义所有结构和类(至少是需要序列化的结构和类),并通过执行以下操作从content manager添加对dll的引用:
我最近在monogame社区问了一个类似的问题,目前不可能在不使用另一个构建到dll中的项目的情况下将您自己的项目中的类型序列化到xml中。可能会有所帮助。对不起,我现在没有时间写一个正确的答案。@craftworkgames我做了一些事情,但我不知道如何做一杯的事情。如果我只想使用XML文件创建对象,我应该在编写器中使用什么而不是FileData?我需要处理吗?我是个新手……我不明白你说的“还有一件事”是什么意思。我曾尝试将项目列表写入XML文件,但它工作得很好…“-什么工作正常?您是否能够反序列化类型的单个实例?
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();
}
}
<?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[]'.