AssetBundles para android (publicación en Play Store)
Google / Play Store establecen un límite en cuanto al tamaño límite de los archivos .aab que se pueden subir al canal de producción como al canal de pruebas en la Google Play Console. Este límite recientemente se ha reducido a 150 Mb, sin embargo, a pesar de que en ocasiones se pueden subir archivos con un peso mayor no es una certeza que esto se mantenga así o que en el futuro retiren la aplicación de la Play Store por el incumplimiento de normas, es por ello que se recomienda mantenerse por debajo de este límite.
Para poder conseguir lo antes mencionado, una de las soluciones es implementar AssetBundles para reducir el peso inicial de una aplicación.
Para lograr esto es necesario descarga e importar en el proyecto de Unity el siguiente package:
https://developers.google.com/unity/archive?hl=es-419
Google proporciona esta herramienta con múltiples funciones, la cual una de ellas es crear estos AssetBundles de formar fácil, así como poder generar el archivo .aab desde el editor de Unity.
Una vez hecho lo anterior, antes de continuar se debe crear una carpeta dentro del proyecto, cuya función será contener los AssetBundles creados. Sin embargo, crear una carpeta de forma normal dentro del proyecto no sería de utilidad, pues esta debe ser creada mediante código desde el editor.
Dentro de la carpeta Assets>Editor será necesario agregar el siguiente script (.cs)
using UnityEditor;
using UnityEngine;
using System.IO;
public class CreateAssetBundles
{
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string assetBundleDirectory = "Assets/AssetBundlesFiles";
if (!Directory.Exists(Application.streamingAssetsPath))
{
Directory.CreateDirectory(assetBundleDirectory);
}
else
{
Directory.CreateDirectory(assetBundleDirectory);
}
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget);
}
}
De esta manera se puede crear la carpeta requerida desde la pestanaña Assets/Build AssetBundles.
Una vez creada esta carpeta, se puede comenzar a seleccionar los assets deseados que van a comprender el contenido del AssetBundle, esta etiqueta hace referencia al nombre del AssetBundle a crear y puede ser creada y asignada desde la ventana de inspector una vez seleccionado el asset.


Una vez etiquetados todos los assets deseados con el mismo AssetBundle podemos dirigirnos a la pestaña de Assets/Build AssetBundles y poder ejecutar el método Build AssetBundles.

Una vez concluido el proceso de Build AssetBundles la carpeta creada anteriormente (AssetBundleFiles) ya contendrá los AsseBundles creados listos para su uso.

Ahora, antes de realizar el archivo .aab para distribuirse por medio de Google Play Console, debemos agregar los AssetBundles creados anteriormente como referencia a los AssetDeliverySettings de Google.

Una vez abierta esta ventana, se debe añadir una nueva carpeta por medio del botón Add Folder… el cual deberá seleccionar la carpeta contenedora de los AssetBundles que se hayan creado con anterioridad.

Una vez agregada la carpeta contenedora de los AssetBundles, podemos configurar el Delivery Mode de estos AssetBundles, esto nos permite controlar en que momento del ciclo de vida de la app se requiere que se descarguen, descompriman e inicialicen estos assets, para este ejemplo se usará Install Time, el cual hace referencia al momento en el que la app es descargada e instalada desde la PlayStore.

Solo queda generar el archivo .aab, esto se logra desde la pestaña de Google/Build Android App Bundle...

Una vez seleccionada esta opción, esperaremos a que Unity termine de generar el archivo .aab en la carpeta destino elegida. Recuerda que este archivo será el que se cargará a Google Play Console, por ende deberá estar firmado con la Keystore correspondiente y listo para su distribución.
Habiendo generado el archivo .aab solo resta agregarlo como nueva versión dentro de Google Play Console.