Smaltire solo determinate risorse in XNA?


13

ContentManager in XNA 4.0 ha solo un metodo Unload () che scarica tutti gli asset.

Voglio avere alcune risorse "globali" che vengono sempre caricate, ma poi voglio risorse per livello che dovrebbero essere scaricate quando il livello viene modificato.

Devo creare una seconda istanza di ContentManager come parte della classe Level.cs? O dovrei usare Game.Content e quindi chiamare .Dispose sulle risorse che carico? O dovrei creare il mio ContentManager sopra la funzione ReadAsset come indicato qui ?

Risposte:


12

Crea una seconda istanza di ContentManager.

Non si dovrebbero mai Dispose() caricare cose da un ContentManager (usando l'implementazione predefinita), poiché queste istanze sono condivise e riutilizzate.

Creare la tua versione di ContentManager è una specie di ortogonale. In entrambi i casi, creerai una seconda istanza di ContentManager (o una classe derivata da essa). Pertanto, se l'implementazione esistente soddisfa i tuoi scopi, utilizzala, altrimenti sostituisci ciò che desideri modificare.

Ovviamente, se il tuo gioco è relativamente piccolo, non importa se usi solo ContentManager e non ti preoccupi di scaricare contenuti tra i livelli.


5
+1 e un promemoria per me stesso di collegarmi qui la prossima volta che qualcuno cerca di dirmi quanto sia bello il modello singleton per i gestori patrimoniali.

Ho anche trovato la demo sulla gestione dello stato del gioco sul sito Web XNA che utilizza esattamente questo (1 Content Manager globale e un secondo su schermi che ne hanno bisogno). Non molto intuitivo, ma lo farà :)
Michael Stum
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.