Pregunta

Actualmente estoy escribiendo un sistema de partículas usando XNA. Lo que me gustaría hacer es usar un archivo externo (XML por ejemplo) y ser capaz de modificar este archivo, mientras que la aplicación se está ejecutando, y una vez salvado, los cambios se reflejarán en el sistema de partículas.

Mi propuesta original: Use un FileWatcher (no recuerdo el nombre de la clase exacta) para supervisar el archivo de efectos de partículas y cuando la fecha cambia, vuelva a cargar el archivo haciendo así que los cambios a realizar.

Cualquier ayuda sería apreciada.

¿Fue útil?

Solución

Usted está en el camino correcto.

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

Notas:

  • El FileSystemWatcher veces genera múltiples eventos de cambio de un único cambio. Tambien algunos programas, como Photoshop excepto a un archivo temporal, a continuación, eliminar el original y cambiar el nombre del temporal presentar al nombre original. mi sistema buffers de eventos del sistema de archivos y los combina en eventos individuales donde sea posible. Porque ellos son Buffered esto también me permite aplicar los eventos en el contenido en una punto apropiado en el programa. Si no pudo amortiguar estos eventos desencadenar mientras que el recurso que está tratando de reemplazar está en uso.

  • Shawn Hargreaves ha escrito sobre Efecto compilación y la automatización de la tubería contenido en XNA Game Studio 4.0 .

  • AppHub tiene un fragmento de código WinForms Serie 2: Carga de contenido de el que se muestra cómo utilizar MSBuild al contenido acumulación dinámica. He encontrado que este método es más lento que la invocación del importador y procesador directamente.

  • En mi sistema, todas las referencias a recursos dinámicos son referencias indirectas. Estas referencias indirectas se asignan y rastreados por un administrador de recursos. Cuando un recurso se construye dinámicamente el administrador de recursos sustituye a la referencia real dentro de la referencia indirecta. Un evento cambiado de recursos se genera a través de la referencia indirecta para que los clientes pueden tomar medidas si es necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top