- Home /
Failed to decompress data for the AssetBundle error on WebGL
So I've been wrestling with Asset Bundles for a few days now and am just stuck getting them to load from the web. Others have posted similar problems but none seem to have solutions. I have a WebGL project that loads them fine with a LoadFromFile action in the editor and so I assume the bundles are correct. When I try online, I store them in a folder at the level of the Index.html file. The logs I get are as follows:
[CachedXMLHttpRequest] 'http://projectname/AssetBundles/WebGL/ab_sm_np' served from indexedDB cache (3172810 bytes). d2c37fe5-2f05-4dcf-8211-c9dd151308af:101:59
...which seems to indicate it has found the file correctly and so is not a pathing problem. However following that I get this error:
Error while downloading Asset Bundle: Failed to decompress data for the AssetBundle 'http://projectname/AssetBundles/WebGL/ab_sm_np'.
And this is as far as I can get. I have tried removing the script component that is added to the prefabs saved in case that was a cause but it still fails. I've tried not compressing the bundle and that changes nothing (code line below).
BuildPipeline.BuildAssetBundles(assetBundleDirectory,
BuildAssetBundleOptions.StrictMode | BuildAssetBundleOptions.UncompressedAssetBundle,
platformsForAssetBundles[i]);
I do create the bundles using a second project as I don't want to mix data preparation with the project but copying the script exactly across seemed to make it all work fine - in the editor at least. I have tried using two methods to load them too in case the depricated version doesn't work (code below)
UnityEngine.Networking.UnityWebRequest request
= UnityEngine.Networking.UnityWebRequestAssetBundle.GetAssetBundle(uri, 0);
yield return request.Send();
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(request);
OSUtils.AssertWarning(bundle != null, $"Failed to WEB load AssetBundle! {uri}");
// Second try
var uwr = UnityWebRequestAssetBundle.GetAssetBundle(uri);
UnityWebRequestAsyncOperation uwrao = uwr.SendWebRequest();
while (!uwrao.isDone)
{
yield return null;
}
AssetBundle bundle2 = DownloadHandlerAssetBundle.GetContent(uwr);
OSUtils.Assert(bundle2 != null, $"2 Failed to WEB load AssetBundle! {uri}");
Can anyone suggest anything else I could try as I'm running out of options?!
Your answer
![](https://koobas.hobune.stream/wayback/20220613003705im_/https://answers.unity.com/themes/thub/images/avi.jpg)