【问题标题】:Database for Weapons?武器数据库?
【发布时间】:2014-05-22 09:10:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# xml xna inventory


    【解决方案1】:

    XML 是一种很好的方法。它将允许您自己甚至最终用户轻松添加新项目。

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

    <?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>
    

    然后在你的代码中:

    // 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);
        ...
    }
    

    这是一个总体概述。我目前不在使用 Visual Studio 的计算机上,所以我怀疑上面的语法是否正确。如果您希望获得进一步的帮助,我可以在今天晚些时候提供帮助。

    【讨论】:

    • 啊,我明白了,所以从 XML 文件加载这么简单吗?一段时间以来,我一直在寻找有关从 XML 文件加载属性的简单教程。有没有机会在某个地方私下向您发送消息?我知道这个网站没有 PM 系统。
    • 很高兴能帮上忙!如果我们继续在此站点上进行交流,以便其他用户可以学习,那将是最好的。您还有什么问题?
    • 哦是的好主意。我想知道为什么您将 XML 中的资产类型设置为“Generic.List”,我知道这些是占位符名称,但您能详细说明它们代表什么吗? :)
    • 是的,Type属性指定了匹配数据类型对应的命名空间和类。如果您想在内容中包含 .xml 文件,这是必需的。在 Visual Studio 中右键单击您的内容项目,添加 > 新项目并创建一个 XML 文件;生成的文件包含 Type 属性。如果您希望通过 LINQ 而不是内容管道加载 XML,则不必包含此内容。一个很好的例子可以在machxgames.com/blog/?p=21 找到。用户有一个简单的 XML 结构,然后可以使用 LINQ 在运行时填充项目列表。
    • 好吧,我还需要为代码中的每个项目创建对象吗?当我有大量物品时,我想轻松地做到这一点并节省空间,我只想能够从一个地方调用它们的对象。
    【解决方案2】:

    您可以使用可以为您保存和检索对象的对象数据库。比如NDatabase这里有一个关于How to use it的小教程

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多