Domanda

Al momento sto scrivendo un sistema di particelle utilizzando XNA. Quello che mi piacerebbe fare è usare un file esterno (XML per esempio) ed essere in grado di modificare questo file, mentre l'applicazione è in esecuzione, e una volta salvato, le modifiche si rifletterà nel sistema particellare.

La mia proposta originale: Utilizzare un FileWatcher (non ricordo il nome esatto della classe) per monitorare il file effetto delle particelle e quando la data cambia, ricaricare il file causando in tal modo le modifiche da apportare.

Qualsiasi aiuto sarebbe apprezzato.

È stato utile?

Soluzione

Sei sulla strada giusta.

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

Note:

  • Il FileSystemWatcher volte genera più eventi di modifica per una singola modifica. Inoltre, alcuni programmi, come Photoshop salvare su un file temporaneo, quindi eliminare il originale e rinominare la temporanea file al nome originale. Il mio sistema buffer di eventi del file system e li combina in singoli eventi dove possibile. Perchè loro sono buffered questo mi permette anche di applicare gli eventi al contenuto ad un punto appropriato del programma. Se non tamponare questi eventi potrebbero innescare mentre la risorsa si è cercando di sostituire è in uso.

  • Shawn Hargreaves ha scritto su effetto compilazione e l'automazione Pipeline contenuti in XNA game Studio 4.0 .

  • AppHub ha un frammento di codice WinForms Serie 2: Carica che mostra come usare MSBuild ai contenuti creare dinamicamente. Ho trovato questo metodo è più lento di invocare l'importatore e il processore direttamente.

  • Nel mio sistema, tutti i riferimenti a risorse dinamiche sono riferimenti indiretti. Questi riferimenti indiretti sono assegnati e monitorati da un gestore di risorse. Quando una risorsa è costruito in modo dinamico il gestore delle risorse sostituisce il riferimento reale all'interno del riferimento indiretto. Un evento cambiato risorsa viene generato attraverso il riferimento indiretto in modo i clienti possono intervenire se necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top