¿Es una mala práctica agregar GameComponents y DrawableGameComponents fuera del método de initialization principal?

Estoy trabajando en un juego de serpientes que tiene múltiples objects de juego (serpientes, manzanas, obstáculos) y modos de juego (clásico, aventura), que son DrawableGameComponents. ¿Está bien que los añada según sea necesario en lugar de hacerlo en el método de initialization principal?

Si no, ¿cómo debo hacer para dibujar y actualizar componentes de mi juego que deben agregarse en otros methods?

En caso afirmativo, ¿hay alguna forma de ejecutar la initialization o cargar methods reemplazados? ¿O está haciendo mi propio método de carga y lo llama justo después de agregar el componente de qué manera se debe hacer?

¡Gracias!

, puede agregar ( Drawable ) GameComponent s en cualquier momento. Cuando los agregas antes de Game.Initialize (por ejemplo: en el constructor de tu juego), se llamará a su método Initialize cuando se Game.Initialize .

Si los agrega después de Initialize en su class de juego, se llamará a su método Initialize cuando se agreguen a la colección Game.Components .

Tenga en count que el resultado de esto es que hay una pequeña window en el método Initialize su class de juego, entre el momento en que llama a base.Initialize() y regresar, donde los componentes del juego no se inicializarán.

Tenga en count que Game.Initialize llamará a LoadContent , por lo que agregar componentes en su método LoadContent también hará que no se inicialicen. Aunque agregar componentes desde un componente del juego , el método Initialize funcionará.

DrawableGameComponent.Initialize llamadas DrawableGameComponent.LoadContent (así que no omita ninguna llamada base en los methods que override ).


También puede agregarlos al inicio de su juego y luego alternar las properties Enabled y Visible según sea necesario.

Alternativamente, puede omitir el sistema de componentes del juego todos juntos. Básicamente es solo una list de objects con methods virtuales de Update y Draw (etcétera). De esta manera puede progtwigr cosas para hacer exactamente lo que quiere.