Descargar AssetBundles
Llevar un Seguimiento de los AssetBundles cargados

Cargar y quitar objetos desde un AssetBundle

Al haber creado un objeto AssetBundle a partir de los datos descargados, puedes cargar los Assets utilizando tres métodos diferentes:

  • AssetBundle.Load cargará un objeto usanto su identificador de nombre como un parámetro. El nombre será el único visible en el Project View. Opcionalmente puedes pasar un tipo de objeto como un argumento al método Load para asegurar que el objeto cargado es de un tipo específico.

  • AssetBundle.LoadAsync funciona igual que el método Load descrito arriba, pero no bloqueará el hilo principal mientras el asset sea cargado. Esto es útil cuando se cargan assets grandes o muchos assets de una vez, a fin de evitar pausas en tu aplicación.

  • AssetBundle.LoadAll cargará todos los objetos que hayan en tu AssetBundle. Así como en AssetBundle.Load, puedes opcionalmente filtrar objetos de acuerdo a su tipo.

Para quitar assets necesitar usar AssetBundle.Unload. Este método toma un parámetro booleano que le dice a Unity si se quitan todos los datos (incluyendo los objetos de asset cargados) o sólo los datos comprimidos desde el bundle descargado. Si tu aplicación está usando algunos objetos del AssetBundle y quieres liberar algo de memoria, puedes colocar false para quitar de la memoria los datos comprimidos. Si quieres quitar por completo todo lo del AssetBundle debes colocar true, con lo que se destruirán los Assets cargados desde el AssetBundle.

Cargar objetos desde un AssetBundle de forma asíncrona

Puedes usar el método AssetBundle.LoadAsync para cargar objetos de forma asíncrona y reducir la probabilidad de tener interrupciones en la ejecución de tu aplicación.

using UnityEngine;

// Note: This example does not check for errors. Please look at the example in the DownloadingAssetBundles section for more information
IEnumerator Start () {
    while (!Caching.ready)
        yield return null;
    // Start a download of the given URL
    WWW www = WWW.LoadFromCacheOrDownload (url, 1);

    // Wait for download to complete
    yield return www;

    // Load and retrieve the AssetBundle
    AssetBundle bundle = www.assetBundle;

    // Load the object asynchronously
    AssetBundleRequest request = bundle.LoadAssetAsync ("myObject", typeof(GameObject));

    // Wait for completion
    yield return request;

    // Get the reference to the loaded object
    GameObject obj = request.asset as GameObject;

        // Unload the AssetBundles compressed contents to conserve memory
        bundle.Unload(false);

        // Frees the memory from the web stream
        www.Dispose();
}

Descargar AssetBundles
Llevar un Seguimiento de los AssetBundles cargados