3

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

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

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

谢谢你的帮助。

4

3 回答 3

3

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

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

那么它只是一个案例

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

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

Path.Combine(Content,filename +".txt");
于 2013-07-09T22:58:21.370 回答
0
  1. 在您的主项目中创建一个“内容”文件夹。
  2. 将无法放入 Content 项目的文件放在那里。
  3. 请务必将所有内容构建操作设置为内容并始终复制。

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

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

于 2013-12-27T09:56:02.283 回答
0

就我而言,我正在从我的主项目的数据文件夹中读取 XML 文件。

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

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

其中 content.xml 的属性为 Build Action: Content and Copy to Output Directory: Copy always

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

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

我的示例代码

//open stream
Stream stream = TitleContainer.OpenStream("data/content.xml");
//do something with it...
于 2013-10-27T15:42:46.967 回答