He leído sobre este patrón varias veces (desde una perspectiva de mejores prácticas):
Asignación de memoria : en lugar de crear instancias del nuevo objeto sobre la marcha, siempre considere crear y usar grupos de objetos. Ayudará a reducir la fragmentación de la memoria y hará que el recolector de basura trabaje menos.
Sin embargo, no sé lo que realmente significa. ¿Cómo puedo implementarlo?
Por ejemplo, ¿puedo crear una instancia GameObject
usando el Instantiate
método de Unity?
Instantiate(prefab, new Vector3(2.0F, 0, 0), Quaternion.identity);
¿Se desaconseja este uso? ¿Qué más puede significar?
unity
c#
design-patterns
memory-efficiency
Muhammad Faizan Khan
fuente
fuente
Respuestas:
Si planea crear una instancia de muchas instancias del mismo prefabricado, definitivamente debería pensar en usar la agrupación de objetos. La función Instantiate de Calling Unity es una de las llamadas de método más exigentes que puede realizar.
La agrupación de objetos es cuando crea instancias de prefabricados antes de usarlos. Se desactivan inmediatamente después de la creación de instancias y se reactivan solo cuando se necesitan. Si bien esto aumenta el uso de memoria, evita la sobrecarga de la CPU de crear instancias durante el juego.
Por ejemplo, actualmente estoy trabajando en un juego de infierno de balas que requiere que se generen cientos de balas en tiempo de ejecución. Inicialmente intenté hacer el juego sin agrupar objetos, pero eso terminó siendo un desastre (menos de 2 fps). Ahora, reúno 500 balas antes de que comience el juego y el juego se ejecuta sorprendentemente rápido (200 fps).
Hay situaciones en las que no se puede usar la agrupación de objetos. Por ejemplo, si tiene un juego en el que la entrada del jugador dicta qué prefabricación se genera, entonces es posible que no tenga más remedio que usar la llamada de instanciación normal. La agrupación de objetos solo es posible cuando se sabe de antemano qué objetos se necesitarán.
El tutorial de YouTube de Sebastian Lague es un gran recurso para aprender sobre la agrupación de objetos: https://youtu.be/LhqP3EghQ-Q
fuente