2

我对在我的游戏中存储 *.txt 级别文件的位置和方式感到非常困惑。

在我的游戏中,我想要的是一些随游戏安装的“预烘焙”关卡的可用性,以及用户创建自己的 OWN 关卡的能力。

所以我所做的是在 Visual Studio 中的“内容”中创建一个名为级别的新目录,并在其中放置一个“level1.txt”。但是我可以访问级别 *.txt 文件的唯一方法是使用完整路径,并且我不能在我的 Visual Studio 解决方案中包含它们,因为它没有构建:

 "C:\My Documents\blahblabh....\levels\level1.txt"
  • 我是否将这些“预烘焙”地图放入可执行文件附近的某个目录中?在编译项目之前,如何在 /bin 目录中创建一个目录?
  • 如何禁止用户删除随游戏安装的“预烘焙”关卡?
    (我不再需要这个)
  • 另外,我在哪里存储用户自定义创建的级别?我认为应该使用 StorageDevice 来完成。但这与第一个问题有关如何在游戏部署后创建目录。

欢迎任何指点!谢谢

编辑:回复:自定义内容处理器。这似乎比我需要的要复杂得多。但是我还需要将我的游戏部署到 xbox360,那么存储设备可以工作吗?

4

2 回答 2

3

您可以编写一个自定义内容处理器来处理您的关卡文件,但这可能是矫枉过正。这样做的好处是您可以将关卡“编译”为用户更难以修改的某种格式。

您可以将其添加到您的项目(不在内容中)并在属性中指定“复制到输出目录 - 始终复制”。在您的项目中创建一个新的子文件夹并将其放置在那里 - 这将是它被复制到的目录。

对于不允许用户删除预烘焙级别,Windows 上不允许这样做。如果用户要删除一些预期的文件,您可以检查您的代码,这将导致它失败。

要创建新目录,可以使用 StorageDevice.OpenContainer().Path 获取根路径并使用 Directory.CreateDirectory。这将适用于 PC 和 Xbox。

于 2009-04-21T22:45:36.010 回答
0

您绝对应该将“预烘焙”级别与可执行文件放在一起。我不使用VS,所以我不能告诉你怎么做。

确实没有办法阻止用户删除您的关卡,但是您可以使用哈希来验证它们是否未被修改(用户仍然可以通过修改您的可执行文件来解决这个问题,但这应该会阻止大多数用户)。

您应该将自定义级别放在用户的文件夹中,例如C:\Documents and Settings\User\MyGame\levels\level.txt.

于 2009-04-21T22:44:48.570 回答