Version: 5.5
Скачивание AssetBundles
Отслеживание загружаемых пакетов ассетов (AssetBundles)

Загрузка и выгрузка объектов из AssetBundle

Having created an AssetBundle object from the downloaded data, you can load the objects contained in it using three different methods:

  • AssetBundle.Load загрузит объект, используя его идентификатор имени в качестве параметра. Имя - то, которое видно в окне Project. Опционально можно передать тип объекта в качестве аргумента методу Load, чтобы убедиться, что загружаемый объект имеет определённый тип.

  • AssetBundle.LoadAsync работает так же как и метод Load, описанный выше, но этот не будет блокировать основной поток во время загрузки ассета. Это полезно при загрузке больших ассетов или множества ассетов сразу, чтобы избежать пауз в вашем приложении.

  • AssetBundle.LoadAll загрузит все объекты, содержащиеся в вашем AssetBundle. Как и в AssetBundle.Load, можно дополнительно фильтровать объекты по типу.

Используйте AssetBundle.Unload для выгрузки ассетов из памяти. Этот метод принимает boolean параметр, сообщающий Unity надо ли выгружать все денные (включая загруженные объекты ассетов), или только сжатые данные из скачанного бандла. Если ваше приложение использует некоторые объекты из AssetBundle и вы желаете освободить немного памяти, вы можете передать false, чтобы выгрузить из памяти только сжатые данные. Если же вы желаете полностью выгрузить из памяти всё, что было загружено из бандла, то следует передать true, чтобы уничтожились все ассеты, загруженные из AssetBundle.

Асинхронная загрузка объектов из AssetBundle’ов

Вы можете использовать метод асинхронной загрузки объектов AssetBundle.LoadAsync и снизить вероятность “подтормаживаний” в вашем приложении.

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();
}

Скачивание AssetBundles
Отслеживание загружаемых пакетов ассетов (AssetBundles)