实时更改XML以更改粒子效果

时间:2010-10-20 18:20:34

标签: xna particle-system

我目前正在使用XNA编写粒子系统。我想做的是使用外部文件(例如XML),并且能够在应用程序运行时修改此文件,一旦保存,更改将反映在粒子系统中。

我原来的提议: 使用FileWatcher(不记得确切的类名)来监视粒子效果文件,并在日期更改时重新加载文件,从而导致更改。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。

Create a System.IO.FileSystemWatcher.
Subscribe to the Changed event.

When the Changed event occurs
   If the path/file extension corresponds to a buildable resource type
      Either
         Directly create and invoke a content importer and processor. (Xna 4.0)
      Or
         Use MSBuild to build a dummy content project.

      Replace references to the existing resource with the newly built resource
      Dispose of the old resource if necessary

注意:

  • 有时会使用FileSystemWatcher 为...生成多个更改事件 一次改变。还有,一些 程序,像photoshop保存到 临时文件,然后删除 原来并重命名临时 文件到原始名称。我的系统 缓冲文件系统事件和 将它们组合成单个事件 在可能的情况。因为他们是 缓冲这也允许我申请 事件发生在内容上 程序中的适当点。如果 你不要缓冲这些事件 触发你的资源 试图替换正在使用中。

  • Shawn Hargreaves撰写了关于Effect compilation and Content Pipeline automation in XNA Game Studio 4.0

  • 的文章
  • AppHub有一个代码片段WinForms Series 2: Content Loading,其中显示了如何使用MSBuild动态构建内容。我发现这种方法比直接调用导入器和处理器慢。

  • 在我的系统中,对动态资源的所有引用都是间接引用。这些间接引用由资源管理器分配和跟踪。在动态构建资源时,资源管理器将替换间接引用中的实际引用。资源更改事件是通过间接引用生成的,因此客户端可以根据需要采取措施。