我在Unity2017.1.0f3中开发了一个应用程序(如果这很重要的话,用于HoloLens )。这个应用程序有3个场景
AssetBundle并显示给用户。这是下载AssetBundle的协同线
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吗?
发布于 2017-09-12 10:57:50
您可以个别地卸载您的包:
bundle.Unload(bool unloadAllLoadedObjects);也可以大量卸载所有加载的捆绑包:
UnloadAllAssetBundles(bool unloadAllObjects);注意bool unloadAllObjects选项,默认情况下为false。如果将其设置为true,则所有实例化资产都将被销毁,得到丢失的引用。
*如果您不知道所有加载的包,则可以获得所有加载包的i枚举列表:AssetBundle.GetAllLoadedAssetBundles
https://stackoverflow.com/questions/46174043
复制相似问题