XNA游戏中的自定义关卡文件夹放在哪里?
我完全不知道在我的游戏中*.txt级别的文件存储在哪里以及如何存储 我希望在我的游戏中提供一些“预烘焙”的关卡,这些关卡是随游戏一起安装的,而且用户可以创建自己的关卡 所以我在VisualStudio中创建了一个名为levels的新目录,并在其中放置了一个“level1.txt”。但我访问*.txt级别文件的唯一方法是使用完整路径,我不能将它们包括在visual studio解决方案中,因为它不生成:XNA游戏中的自定义关卡文件夹放在哪里?,xna,storage,Xna,Storage,我完全不知道在我的游戏中*.txt级别的文件存储在哪里以及如何存储 我希望在我的游戏中提供一些“预烘焙”的关卡,这些关卡是随游戏一起安装的,而且用户可以创建自己的关卡 所以我在VisualStudio中创建了一个名为levels的新目录,并在其中放置了一个“level1.txt”。但我访问*.txt级别文件的唯一方法是使用完整路径,我不能将它们包括在visual studio解决方案中,因为它不生成: "C:\My Documents\blahblabh....\levels\level1.t
"C:\My Documents\blahblabh....\levels\level1.txt"
- 我是否将这些“预烘焙”映射放在可执行文件附近的某个目录中?在编译项目之前,如何在/bin目录中创建目录
- 如何阻止用户删除游戏附带的“预烘焙”关卡?
(我不再需要此关卡) - 此外,我在哪里存储用户自定义创建的级别?我认为这应该通过StorageDevice实现。但这与第一个问题有关,即在部署游戏后如何创建目录
您应该将自定义关卡放在用户文件夹中,如
C:\Documents and Settings\user\MyGame\levels\level.txt
您可以编写一个自定义的内容处理器来处理您的级别文件,但这可能有些过头了。这样做的好处是,您可以将级别“编译”为用户更难修改的某种格式
您只需将其添加到项目中(不在内容中),并在属性中指定“复制到输出目录-始终复制”。在项目中创建一个新的子文件夹,并将其放置在那里-这将是它复制到的目录
对于不允许用户删除预烘焙的级别,Windows上无法允许这样做。您可以在代码中执行检查,如果用户要删除某些预期的文件,则会导致代码失败
要创建新目录,可以使用StorageDevice.OpenContainer().Path获取根路径,并使用directory.CreateDirectory。这将在PC和XBox上运行。编写自定义内容处理器并不难,它强制执行良好的实践,并迫使您编写合理的验证,同时由于更简单的读取格式,在加载时加快游戏速度。这也使得在事后移植到X360变得更加容易。简言之,它需要稍微多做些努力,可能会防止很多bug,并且是公认的方法。:)@jfclavette:对于这项任务来说,这可能有点过头了,但这绝对是一次很好的学习体验-XNA非常关注内容管道,没有更好的方法来解决这个问题。“只要级别在“内容”下发布,你就应该能够使用Game.content.RootDirectory来定位文件并读取它们”。这是行不通的。因为如果我将我的“levels”目录包含在content下,由于某种原因它不会被复制到/bin目录中。请注意,我不能将我的“level1.txt”包含在Content/levels文件夹中,因为它不会编译。