Version: 2021.1
AssetBundle workflow
Construyendo AssetBundles

Preparando Assets para AssetBundles

Al usar AssetBundles, puede asignar cualquier asset a cualquier bundle (paquete) que desee. Sin embargo, hay ciertas estrategias a considerar al configurar sus bundles (paquetes). Estas estrategias de agrupación están destinadas a ser utilizadas de la manera que mejor se adapten a su proyecto específico. Siéntase libre de mezclar y combinar estas estrategias como mejor le parezca.

Logical Entity Grouping (Agrupación de entidades lógicas)

El Logical Entity Grouping (agrupamiento de entidades lógicas) es donde se asignan los assets a los AssetBundles basándose en la parte funcional del proyecto que representan. Esto incluye secciones tales como la interfaz de usuario, los personajes, los entornos y cualquier otra cosa que pueda aparecer con frecuencia a lo largo de la vida útil de la aplicación.

Ejemplos

  • Agrupación de todas las texturas y datos de diseño para una pantalla de interfaz de usuario
  • Agrupación de todos los modelos y animaciones para un personaje / conjunto de personajes
  • Agrupación de texturas y modelos para piezas del escenario compartidas en varios niveles

El Logical Entity Grouping es ideal para contenido descargable (DLC) por el hecho de que, si todo está separado de esta manera, puede realizar un cambio en una sola entidad y no requerir la descarga de assets adicionales sin cambios.

El mayor truco para poder implementar correctamente esta estrategia es que el desarrollador que asigna los assets a sus respectivos paquetes debe estar familiarizado con el momento y el lugar preciso en que el proyecto utilizará cada uno de estos assets.

Type Grouping (agrupamiento por tipo)

Para esta estrategia, asignará assets de un tipo similar, como pistas de audio o archivos de localización de idioma, a un solo AssetBundle.

El Type Grouping (agrupación por tipos) es una de las mejores estrategias para crear AssetBundles paravarias plataformas. Por ejemplo, si sus ajustes de compresión de audio son idénticos entre plataformas Windows y Mac, puede empaquetar todos los datos de audio en AssetBundles y reutilizarlos, mientras que los shaders tienden a compilarse con opciones específicas de plataforma, por lo que un bundle (paquete) de shader que compile para mac, pueda no ser reutilizado en windows. Además, este método es ideal para hacer que sus AssetBundles sean compatibles con más versiones de Unity ya que los formatos de compresión de texturas y las configuraciones cambian con menos frecuencia que algo así como los scripts de código o prefabs.

Concurrent Content Grouping (agrupación de contenido concurrente)

El Concurrent Content Grouping es la idea de que agrupará assets que se cargan y se usan al mismo tiempo. Podría pensar que este tipo de bundles (paquetes) se usa para un nivel de un juego en el que cada nivel contiene personajes, texturas, música, etc. totalmente únicos. Debe estar absolutamente seguro de que un asset en uno de estos AssetBundles solo se usará al mismo tiempo que el resto de los assets en ese bundle (paquete). Tener una dependencia de un solo assetdentro de un paquete de Concurrent Content Grouping resultaría en tiempos de carga significativamente mayores. Se verá obligado a descargar todo el paquete para ese único asset.

El caso de uso más común para bundles (paquetes) Concurrent Content Grouping es para paquetes que están basados en escenas. En esta estrategia de asignación, cada paquete de escena debe contener la mayoría o todas las dependencias de escena.

Tenga en cuenta que un proyecto puede y debe combinar estas estrategias según sus necesidades. El uso de la estrategia óptima de asignación de assets para cualquier escenario dado aumenta la eficiencia de cualquier proyecto.

Por ejemplo, un proyecto puede decidir agrupar sus elementos de interfaz de usuario (IU) para diferentes plataformas en su propio paquete específico de plataforma-IU, pero agrupa su contenido interactivo por nivel/escena.

Independientemente de la estrategia que siga, estos son algunos consejos adicionales que debe tener en cuenta en todos los ámbitos:

  • Divida objetos actualizados frecuentemente en AssetBundles separados de los objetos que rara vez cambian
  • Agrupe objetos que puedan cargarse simultáneamente. Como un modelo, sus texturas y sus animaciones
  • Si observa que varios objetos en varios AssetBundles dependen de un solo asset de un AssetBundle completamente diferente, mueva la dependencia a un AssetBundle por separado. Si varios AssetBundles hacen referencia al mismo grupo de assets en otros AssetBundles, puede valer la pena utilizar esas dependencias en un AssetBundle compartido para reducir la duplicación.
  • Si es poco probable que se carguen dos conjuntos de objetos al mismo tiempo, como los assets estándar y de alta definición, asegúrese de que estén en sus propios AssetBundles.
  • Considere dividir un AssetBundle si cada vez se carga menos del 50% de ese paquete al mismo tiempo
  • Considere combinar AssetBundles que son pequeños (menos de 5 a 10 assets) pero cuyo contenido se carga con frecuencia simultáneamente
  • Si un grupo de objetos son simplemente versiones diferentes del mismo objeto, considere las Variantes de AssetBundles
AssetBundle workflow
Construyendo AssetBundles