Los juegos XNA tienen un método Unload()
, donde se supone que el contenido está descargado. Pero, ¿qué sentido tiene esto? Si todo el contenido está siendo descargado, entonces el juego debe estar saliendo, en cuyo caso todo sería basura recogida de todos modos, ¿verdad?XNA: ¿Cuál es el punto de Descargar()?
Respuesta
Por lo que yo lo entiendo, no es útil para ningún uso estándar, ya que como dices, el recolector de basura se ocupa de las cosas por ti.
Sin embargo, es útil tener un evento llamado cuando el juego está saliendo por muchas cosas. Por ejemplo, puede enviar un mensaje a todos los clientes en un juego de varios jugadores diciéndoles que está saliendo, y luego puede dejar que el recolector de basura mate sus conexiones de red.
Siempre es correcto limpiarlo después de usted ... de lo contrario la gente dejará de permitirle jugar con sus juguetes.
Mi mejor opción es que le permitirá anidar Game
objetos en su proyecto y le dará una forma de limpiarlos más tarde. Esto permitiría una mejor reutilización de tu código. Es de esperar que un MPV de XNA o alguien del equipo de XNA lo encuentre y brinde más información.
¿Qué significa "siguiente" un objeto de "Juego"? –
Significa que tengo un dedo gordo 'nido' ... gracias, lo arreglaré. –
Aún así, no es tan útil, después de todo, una vez que el objeto del juego es basura, se recopilará el administrador de contenido y, por lo tanto, también lo hará todo el contenido que esté administrando. – Martin
La descarga a veces es necesaria, especialmente cuando se trabaja con bibliotecas que no se descargan a través del Recolector de basura. Un ejemplo es XACT. Recuerdo tener que destruir el objeto responsable de la música XACT en el evento Descargar en un caso particular donde el objeto no estaba siendo destruido por el GC ... Pero olvidé el escenario real ...
Más importante aún, el Método UnloadContent para clases de GameComponent en lugar de clases de juegos. En general, los objetos GameComponent y DrawableGameComponent pueden hacer uso de varios recursos. Cuando se destruye el objeto, debe asegurarse de que todos los recursos relacionados con el objeto se destruyan, se liberen o, a veces, se pongan en estado pendiente.
Le sugiero que lo deje por el momento. A medida que avanza con el desarrollo de XNA, y para proyectos de mayor escala, es posible que necesite hacer uso del método de descarga y comprender los casos concretos que necesita.
- 1. ¿Cuál es el mejor blog de XNA?
- 2. JABÓN - ¿Cuál es el punto?
- 3. HashMap.containsValue - ¿Cuál es el punto?
- 4. ¿Cuál es el punto de g ++ -Wreorder?
- 5. ¿Cuál es el punto de System.IO.dll?
- 6. ¿Cuál es el punto de DOCTYPE?
- 7. ¿Cuál es el punto de aclocal?
- 8. ¿Cuál es el punto de los frijoles?
- 9. ¿Cuál es el punto de XPS?
- 10. ¿Cuál es el punto de declarar estilo?
- 11. ¿Cuál es el punto de FILL_AND_STROKE?
- 12. ¿Cuál es el punto de make_heap?
- 13. ¿Cuál es el punto de Convert.ToDateTime (bool)?
- 14. ¿Cuál es el punto de especificar hibernate.jdbc.batch_size?
- 15. ¿Cuál es el punto de document.defaultView?
- 16. ¿Cuál es el punto de MethodImplOptions.InternalCall?
- 17. ¿Cuál es el punto de STL?
- 18. Javascript: ¿cuál es el punto de RegExp.compile()?
- 19. ¿Cuál es el punto de os.error?
- 20. Propiedades de escritura, ¿cuál es el punto?
- 21. ¿Cuál es el punto de setRetainsRegisteredObjects :?
- 22. ¿Cuál es el punto de _MERGE_PROXYSTUB?
- 23. ¿Cuál es el punto de los punteros?
- 24. ¿Cuál es el punto de setArguments?
- 25. HTML DTDs - ¿Cuál es el punto?
- 26. ¿Cuál es el punto en UrbanAirship?
- 27. + [NSString stringWithString:] - ¿Cuál es el punto?
- 28. ¿Cuál es un buen recurso para aprender XNA?
- 29. "multiset" y "multimap": ¿cuál es el punto?
- 30. ¿Cuál es el punto del bloque finally?
El hecho de que todos sus objetos estén descargados cuando cierra su programa no significa que no deba usar 'IDisposable.Dispose()' o 'using (...)' tampoco. –
Ese es un buen punto. – Martin
También puede anular el método de evento Game1.OnExiting protegido para lograr esto. Tiene más sentido usar OnExiting para, por ejemplo, enviar un mensaje cuando se cierra el juego. –