代码之家  ›  专栏  ›  技术社区  ›  Neil Knight

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

  •  1
  • Neil Knight  · 技术社区  · 14 年前

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

    我的原始提议: 使用FileWatcher(不记得确切的类名)监视粒子效果文件,当日期更改时,重新加载该文件,从而进行更改。

    任何帮助都将不胜感激。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Empyrean    14 年前

    你走对了。

    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
    

    笔记:

    • 文件系统监视程序有时 为生成多个更改事件 一次改变。还有,一些 程序,如Photoshop保存到 临时文件,然后删除 原始并重命名临时 文件的原始名称。我的系统 缓冲区文件系统事件和 将它们组合成单个事件 如果可能的话。因为他们是 缓冲这也允许我应用 在 程序中的适当点。如果 你不能缓冲这些事件 当你的资源 正在尝试替换。

    • 肖恩·哈格里夫斯写过 Effect compilation and Content Pipeline automation in XNA Game Studio 4.0 .

    • AppHub有一个代码段 WinForms Series 2: Content Loading 它演示了如何使用msbuild动态生成内容。我发现这个方法比直接调用导入程序和处理器要慢。

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