Как загрузить сцену из Asset Bundle в Unity 2018

Я работаю в Unity 2018 Asset Bundle. В моем проекте я должен упаковать всю сцену в AssetBundle, и когда мне нужно, игра загрузит AssetBundle из Интернета, а затем распакует его.

Я использовал этот код для загрузки сцены из assetbundle.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.IO;
using UnityEngine.SceneManagement;

public class AssetBundleSceneLoader : MonoBehaviour 
{
    public string url;
    public int downloaded = 0;
    AssetBundle bundle;
    public System.Object test;
    public Slider progressbar;

    public float progress;

    WWW www;
    void Update() 
    {
        progress = www.progress;
        progressbar.value = progress;
    }

    IEnumerator Start() 
    {
        ClearCacheExample ();
        if (downloaded == 0)
        {
            using ( www = WWW.LoadFromCacheOrDownload (url, 0)) 
            {
                yield return www;
                if (www.error != null)
                    throw new Exception ("WWW download had an error:" + www.error);
                if (www.error == null) 
                {
                    bundle = www.assetBundle;
                }
            }
            if (Caching.ready == true) 
            {
                downloaded = 1;
                string[] scenePath = bundle.GetAllScenePaths();
                Debug.Log(scenePath[0]);
                SceneManager.LoadScene(scenePath[0]);
            }
        }
    }

    void ClearCacheExample()
    {
        Directory.CreateDirectory("Cache1");
        Directory.CreateDirectory("Cache2");
        Directory.CreateDirectory("Cache3");

        Caching.AddCache("Cache1"); 
        Caching.AddCache("Cache2"); 
        Caching.AddCache("Cache3"); 

        bool success = Caching.ClearCache();

        if (!success)
        {
            Debug.Log("Unable to clear cache");
        }
    }
}

Я упаковал свою сцену и поместил ее в Dropbox. Он скачивается из интернета. Сцена загружается нормально. Я столкнулся с некоторыми проблемами здесь:

Не весь экран загружается. Экран уменьшается до четверти своего размера, а затем воспроизводится.

Что не так в моем коде? Доступна ли какая-либо отдельная процедура для загрузки сцены из пакета ресурсов ...?

Как я могу загрузить сцену из набора ресурсов? Есть ли в наличии какой-нибудь образец проекта?


person cloudfire    schedule 20.02.2019    source источник
comment
вы его тестировали, не скачивая / не загружая из бандла? вы знаете .. шаг за шагом   -  person derHugo    schedule 20.02.2019
comment
Также обратите внимание, что если ваша сцена имеет . в имени файла (не включая .scene), то есть известная ошибка, которая была исправлена ​​в 2018.3.4   -  person Draco18s no longer trusts SE    schedule 20.02.2019
comment
Я решил эту проблему. Причина в том, что настройки проигрывателя, настройки графики и настройки сборки должны быть идентичны в обоих проектах. Как только я изменяю свои настройки, сцена загружается правильно. Спасибо всем за ответ.   -  person cloudfire    schedule 23.02.2019
comment
У меня есть еще одна проблема. При загрузке сцены из набора ресурсов. Лагает .. Как решить проблему лагов ...   -  person cloudfire    schedule 23.02.2019


Ответы (1)


Вся концепция assetbundle состоит в том, чтобы загружать материалы по запросу. Загрузка всей сцены кажется плохой схемой. Кроме того, весь слой сценария теряется при использовании пакетов ресурсов. Если вам нужно загрузить большое окружение или что-то большее, просто поместите его в префаб.

person Viktor Kadza Jr.    schedule 28.12.2020