【发布时间】:2016-03-17 19:56:21
【问题描述】:
我一直在尝试为我的游戏中的项目实现一个 XML 系统。但我就是无法让它工作。 我正在使用 Monogame 和它附带的内容管道。 我已经创建了一个 Inventory 类和一个 Item 类。
这是来自 Inventory 类的 sn-ps(具有序列化):
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 文件:
<?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[]'.
我在这里阅读了一些其他问题,我必须提供参考,但我就是找不到解决方法。在解决方案资源管理器中,我可以看到引用,但是当我单击添加时,我在项目中看不到任何东西,只有框架等标准的东西在那里。 哦,我在 Item 类中有一个没有参数的构造函数,所以应该没问题。
还有一件事。我试图将项目列表写入 XML 文件,它运行良好..
提前致谢!
【问题讨论】:
-
也许this tutorial 会有所帮助。抱歉,我现在没有时间写一个正确的答案。
-
@craftworkgames 我做了一些事情,但我不知道如何做一些事情。我应该在 writer 而不是 FileFileData 中拥有什么,如果我只想使用 XML 文件创建对象,是否需要处理?我对此有点陌生...
-
我不明白你所说的“”还有一件事是什么意思。我试图将项目列表写入 XML 文件,它运行良好.."" - 什么工作正常?你能反序列化你的类型的单个实例吗?