Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 武器数据库?_C#_Xml_Xna_Inventory - Fatal编程技术网

C# 武器数据库?

C# 武器数据库?,c#,xml,xna,inventory,C#,Xml,Xna,Inventory,我正在创建一个简单的RPG游戏,目前我正在研究武器对象。 我现在有一个W_Swarm.cs类,它拥有我想要创建的任何剑类武器的所有属性。对于我的库存系统,我只需要一个存储整数的数组,每个数字代表一个项目的ID 我的问题是,如果我对所有类型的物品(消耗品、剑、斧子、盾牌等)都有多个类,我应该如何将所有这些存储在数据库中以便于访问? 因此,如果我想画一个特定的武器,我可以从数据库中调用它,并将其创建为一个对象(在屏幕上,在清单中等等)。我认为XML可能是一种方法,但我不确定如何将XML文件中的数据输

我正在创建一个简单的RPG游戏,目前我正在研究武器对象。 我现在有一个W_Swarm.cs类,它拥有我想要创建的任何剑类武器的所有属性。对于我的库存系统,我只需要一个存储整数的数组,每个数字代表一个项目的ID

我的问题是,如果我对所有类型的物品(消耗品、剑、斧子、盾牌等)都有多个类,我应该如何将所有这些存储在数据库中以便于访问? 因此,如果我想画一个特定的武器,我可以从数据库中调用它,并将其创建为一个对象(在屏幕上,在清单中等等)。我认为XML可能是一种方法,但我不确定如何将XML文件中的数据输入到我的XNA代码中,以便从XML中的特定项创建对象等


如果我需要进一步说明,请告诉我。

您可以使用对象数据库来为您保存和检索对象。例如,这里有一个关于XML是一种很好的方法的小教程。它将允许您自己甚至最终用户轻松添加新项目

这些类是从基类派生的吗?我的想法是,如果你有一个消耗品、剑、斧、盾等继承自的基本类物品,你可以尝试这样的东西:

<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="Generic.List<MyDataTypes.Item>">
    <Item>
      <Name>Wooden Sword</Name>
      <Properties>10 10 10 10</Properties>
      <TextureName>WoodenSword</TextureName>
    </Item>
    <Item>
      <Name>Wooden Shield</Name>
      <Properties>10 10 10 10</Properties>
      <TextureName>WoodenShield</TextureName>
    </Item>
  </Asset>
</XnaContent>

木剑
10 10 10 10
木剑
木盾
10 10 10 10
伍登希尔德
然后在代码中:

// Load items into content
//http://msdn.microsoft.com/en-us/library/ff604980.aspx
List<Item> listOfItems = Content.Load<List<Item>>("xmlFileName");

foreach (Item item in listOfItems)
{
    myItemTexture = Content.Load<Texture2D>(item.TextureName);
    ...
}
//将项目加载到内容中
//http://msdn.microsoft.com/en-us/library/ff604980.aspx
List listOfItems=Content.Load(“xmlFileName”);
foreach(项目列表中的项目)
{
myItemTexture=Content.Load(item.TextureName);
...
}

这是一个总体概述。我目前没有在Visual Studio的计算机上工作,所以我怀疑上面的语法是否正确。如果您需要进一步的帮助,我可以在今天晚些时候提供帮助。

啊,我明白了,从XML文件加载这么简单?一段时间以来,我一直在寻找一个简单的教程,介绍如何从如此简单的XML文件加载属性。。我有没有可能私下给你发个信息?我知道这个网站没有PM系统。我很高兴能帮上忙!如果我们继续在这个网站上交流,以便其他用户可以学习,那将是最好的。你还有什么问题?好主意。我想知道为什么您在XML中将资产类型设置为“Generic.List”,我知道这些是占位符名称,但您能详细说明它们代表什么吗?:)是,Type属性指定匹配数据类型的相应命名空间和类。如果要在内容中包含.xml文件,则需要执行此操作。在VisualStudio中右键单击内容项目,添加>新建项并创建一个XML文件;生成的文件包含Type属性。如果希望通过LINQ而不是内容管道加载XML,则不必包含此内容。这方面的一个很好的例子可以在上找到。用户有一个简单的XML结构,然后可以在运行时使用LINQ填充项目列表。好的,那么我还需要为代码中的每个项目创建对象吗?我想这样做很容易,节省空间,因为当我有大量的项目时,我只想能够从一个地方调用它们的对象。