我在哪里将自定义Levels文件夹放在XNA游戏中?

时间:2009-04-21 22:25:36

标签: xna storage

我很遗憾在我的游戏中将* .txt级别文件存储在何处以及如何存储。

我在游戏中想要的是游戏中安装的一些“预烘焙”级别的可用性,以及用户创建其OWN级别的能力。

所以我所做的是在视觉工作室内创建一个名为levels的“内容”中的新目录,然后在其中放置一个“level1.txt”。但我可以访问级别* .txt文件的唯一方法是使用完整路径,我不能在我的visual studio解决方案中包含它们,因为它不构建:

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

任何指针都会受到欢迎!谢谢

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

2 个答案:

答案 0 :(得分:3)

你可以编写一个自定义内容处理器来处理你的关卡文件,但它可能有点过分。这样做的好处是,您可以将级别“编译”为某种格式,这对用户来说更难以修改。

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

如果不允许用户删除预烘焙级别,则Windows无法允许这样做。您可以检查代码,如果用户要删除某些预期文件,则会导致代码失败。

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

答案 1 :(得分:0)

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

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

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