C# 如何组织XNA内容项目以允许在运行前和运行时编辑游戏脚本

C# 如何组织XNA内容项目以允许在运行前和运行时编辑游戏脚本,c#,xna,C#,Xna,现在在我的XNA解决方案中,我有两个项目,我的主XNA游戏项目和一个XNA内容项目。我开始将游戏的某些方面暴露给脚本引擎,主要目的是让自己能够在不关闭游戏、重新编译和重新启动的情况下更改行为和数据 现在,当我进行新构建时,它会在C:\solution\project\bin\x86\Debug目录中创建二进制文件,并将内容项目中的所有数据复制到C:\solution\project\bin\x86\Debug\content中。我试图解决的问题是将游戏脚本放在何处,以便游戏在运行时可以访问它们,

现在在我的XNA解决方案中,我有两个项目,我的主XNA游戏项目和一个XNA内容项目。我开始将游戏的某些方面暴露给脚本引擎,主要目的是让自己能够在不关闭游戏、重新编译和重新启动的情况下更改行为和数据

现在,当我进行新构建时,它会在C:\solution\project\bin\x86\Debug目录中创建二进制文件,并将内容项目中的所有数据复制到C:\solution\project\bin\x86\Debug\content中。我试图解决的问题是将游戏脚本放在何处,以便游戏在运行时可以访问它们,但在运行前和运行期间也可以编辑它们,而不会在下一步重建/复制过程中覆盖更改

如果脚本位于我的内容项目中,并且我在运行时对其进行了编辑,则加载脚本更改的唯一方法是检查C:\solution\project\bin\x86\Debug\scripts,并将其与C:\solution\projectContent\scripts中的同一脚本文件进行比较,然后加载较新的脚本。这似乎不确定,需要硬编码路径


有没有更优雅的方法来处理这个问题?

在Windows Phone或XBox上运行时,您甚至无法获取这些路径-因此您可能在询问Windows上的XNA(如果有,请在您的问题中澄清)

如果您的文件不需要通过内容管道以任何方式进行处理,我建议您将它们放在由标识的公共位置。这个值在XNA框架中起作用(尽管我不确定它在PC以外的平台上指向何处)

至于您的开发设置,您可以和

如果这些文件不存在,一个简单的预构建批处理文件可以将它们复制到公共位置,这样签出代码的人就不需要手动复制这些文件


希望这有帮助

好吧,我想这增加了一个问题:当在开发中的pc上运行脚本时,如何使脚本可编辑,但当在wp7或xbox上运行脚本时,游戏仍然可以查看脚本?正如我所提到的-脚本在pc上可编辑,因为它们都是从SpecialFolder.ApplicationData编辑和加载的-并且在xbox或wp7上它们是可编辑的应该仍然可以从那里运行(文档说明此值适用于XNA)。它们只是无法编辑,仅此而已。