【问题标题】:How to implement a text file in content (XNA)如何在内容中实现文本文件(XNA)
【发布时间】:2013-07-09 22:41:31
【问题描述】:

我正在构建一个从文本文件加载其地图的游戏。

在创建处理地图的部分时,我只是将文本文件保存在内容文件夹中,并通过其 Windows 文件路径获取它。这不适用于正确部署(甚至从不同驱动器运行游戏),因为它要求文件路径完全相同。

我四处寻找一种方法来包含文本文件,就像我包含 Texture2D 一样,但我找不到任何允许我使用它的类。其他问题的一些答案建议我只使用内容文件夹中的文本文件?我该怎么做?我的程序名称是 IslandQuest (占位符;它甚至不涉及岛屿)所以我会将文本文件放在 XNA Studio 生成的 IslandQuestContent 文件夹中吗?我如何从那里访问它,使其文件路径不依赖于计算机的驱动器配置?

感谢您的帮助。

【问题讨论】:

  • 前段时间我也在想同样的事情......我很想看看答案是什么!
  • 让我加载一个旧的 xna 文件,1 秒,很确定答案在于文件的属性

标签: c# text xna


【解决方案1】:

这可能不是最好的方法,只是回顾一下我在 XNA 大学第一年所做的事情,

我将我的 txt 文件添加到目录文件夹中。然后在文件的属性中(在解决方案资源管理器和查看属性窗口中选择它)应该有“复制到输出目录”,如果更新,请确保这是复制。

那么它只是一个案例

string.Format("Content/{0}.txt", filename)

我确实认为这可以通过以下方式改进,但未经测试

Path.Combine(Content,filename +".txt");

【讨论】:

  • 注意:在我的例子中,游戏以 Xbox 为目标,Build Action 中也有可以探索的选项
  • 在 string.Format() 之后如何使用它?目前,我正在使用 File.ReadAllLines() 将其读入 String 数组,但我的印象是这仅用于访问外部文件?
  • 此外,它在编译时抛出此错误:“无法自动检测哪个导入器用于“layout.txt”。没有处理此文件类型的导入器。指定处理此文件类型的导入器你的项目。”我之前看了一下进口商,但没有成功。
  • 将构建操作更改为“无”。您可以使用 File.ReadAllLines(string.Format("Content/{0}.txt", filename) 获取文件的内容。这至少适用于 Xbox 和 Windows
【解决方案2】:

在我的例子中,我正在从我的主项目的数据文件夹中读取 XML 文件。

因此,在我的解决方案探索项目中,我进行了以下设置:

WindowsPhoneGame1
  ...
  data/
    content.xml
  Game1.cs
  Program.cs
  etc...

content.xml 的属性是 Build Action: Content 和 Copy to Output Directory: Copy always

在读取文件的类中,我使用了TitleContainer.OpenStream Method,根据文档:

将流返回到默认标题存储中的现有文件 地点。 .... 返回的流是只读的。要读取的文件必须已经存在,否则此方法将失败。

我的示例代码

//open stream
Stream stream = TitleContainer.OpenStream("data/content.xml");
//do something with it...

【讨论】:

    【解决方案3】:
    1. 在您的主项目中创建一个“内容”文件夹。
    2. 将无法放入Content项目的文件放在那里。
    3. 确保将所有内容构建操作设置为内容并始终复制。

    您的主项目中的内容文件夹和内容项目中的内容在构建时最终将位于同一文件夹中。

    文件路径仍然是“Content/file.ext”或其他。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2020-07-23
      • 2013-06-17
      • 2023-03-18
      相关资源
      最近更新 更多