首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次下载AssetBundle失败

多次下载AssetBundle失败
EN

Stack Overflow用户
提问于 2017-09-12 10:29:09
回答 1查看 1.1K关注 0票数 0

我在Unity2017.1.0f3中开发了一个应用程序(如果这很重要的话,用于HoloLens )。这个应用程序有3个场景

  • 场景1.用户提供凭据并使用服务进行身份验证。
  • 场景2.服务提供,应用程序显示用户可以选择的资源列表。
  • 场景3.选择资源后,下载AssetBundle并显示给用户。

这是下载AssetBundle的协同线

代码语言:javascript
复制
IEnumerator GetAssetBundle(string assetUrl, Action<AssetBundle> successCallback, Action<string> errorCallback )
    {
        UnityWebRequest request = UnityWebRequest.GetAssetBundle(assetUrl);

        yield return request.Send();

        if (request.isHttpError || request.isNetworkError)
        {
            errorCallback(request.error);
        }
        else
        {
            AssetBundle bundle = ((DownloadHandlerAssetBundle)request.downloadHandler).assetBundle;

            successCallback(bundle);
        }
    }

用户有能力在场景之间来回切换,并可能两次选择相同的资源。这就是问题发生的时候。

当用户第一次尝试下载AssetBundle时,一切正常。第二次(以及所有后续的)下载失败。此失败不是下载过程中的错误,而是

((DownloadHandlerAssetBundle)request.downloadHandler).assetBundle;总是空的。

我在想,统一将不允许您下载同一AssetBundle超过一次,您必须缓存它,一旦您下载它。是这种情况吗?我想避免这一点,因为这个应用程序最终可以下载大量的AssetBundle,并且在下载之后缓存它们是一个糟糕的选择。

如果需要的话,您知道有什么方法可以多次下载相同的AssetBundle吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-12 10:57:50

您可以个别地卸载您的包:

代码语言:javascript
复制
bundle.Unload(bool unloadAllLoadedObjects);

也可以大量卸载所有加载的捆绑包:

代码语言:javascript
复制
UnloadAllAssetBundles(bool unloadAllObjects);

注意bool unloadAllObjects选项,默认情况下为false。如果将其设置为true,则所有实例化资产都将被销毁,得到丢失的引用。

*如果您不知道所有加载的包,则可以获得所有加载包的i枚举列表:AssetBundle.GetAllLoadedAssetBundles

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46174043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档