Как загрузить сцену из пакета активов в единстве 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. Загружается из интернета. Сцена загружается нормально. Я столкнулся с некоторыми проблемами здесь:

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

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

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

1 ответ

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

Другие вопросы по тегам