Uso del ContentManager dentro de un GameComponent
El ContentManager es la entidad
encargada de gestionar la carga de archivos externos tales como modelos, imágenes , fuentes, etc.
Por defecto, cuando nosotros creamos un nuevo Game Proyect para XNA desde
nuestro Visual Express, la clase Game1.cs contendrá declarado por defecto un
ContentManager.
Si queremos que nuestros
GameComponent cargue recursos, necesitaremos usar a dicho gestor. Las preguntas
que nos surgen son ¿cómo recupero o accedo al que ya tiene mi juego sin crear
uno nuevo? ¿O por qué no crearnos uno nuevo para cada GameComponent y que el
juego principal mantenga el suyo para lo
recursos generales? ¿Se podría hacer algo parecido a lo que hacemos con la
entidad GraphicsDeviceManager desde un GameComponent:
IGraphicsDeviceService graphicsDeviceService = (IGraphicsDeviceService)Game.Services.GetService(typeof(IGraphicsDeviceService));
??
Esto mismo le preguntaba a Javier Cantón.
La mejor solución que me
comentaba nuestro Gurú de los video juegos sería
pasarle el ContentManager del Game principal a nuestro GameComponent como una
propiedad, de forma que no instanciemos nuevos ContentManager en el interior de cada uno de estos, realizando un
uso más eficaz de la memoria.
La otra solución eficiente sería
obtenerlo de forma similar al GraphicsDeviceManager, pero eso no es posible.
(Si fuera posible, ya estais tardando en escribir!!)
Un saludo.
Ramón Tébar Bueno – Albacete DotNetClub