无法解压缩资产包"内存"的数据。-- Unity3D 资源包加载


IEnumerator WWWLoader()
{
WWW bundleRequest = new WWW("*****************");
while(!bundleRequest.isDone)
{
yield return null;
}
AssetBundle bundle = null;
if (bundleRequest.bytesDownloaded > 0)
{
AssetBundleCreateRequest myRequest = AssetBundle.LoadFromMemoryAsync(bundleRequest.bytes);
while(!myRequest.isDone)
{
Debug.Log("loading....");
yield return null;
}
if (myRequest.assetBundle != null)
{
bundle = myRequest.assetBundle;
GameObject model = null;
if (bundle != null)
{
AssetBundleRequest newRequest = bundle.LoadAssetAsync<GameObject>("Log");
while (!newRequest.isDone)
{
Debug.Log("loading ASSET....");
yield return null;
}
model = (GameObject)newRequest.asset;
bundle.Unload(false);
}
}
else
{
Debug.LogError("COULDN'T DOWNLOAD ASSET BUNDLE FROM URL (assetBundle = null)");
}
}
else
{
Debug.LogError("COULDN'T DOWNLOAD ASSET BUNDLE FROM URL (0 bytes)");
}
}

这是我加载AssetBundle的代码(我已经删除了URL(。它给了我一个错误";无法解压缩AssetBundle"内存"的数据"我不确定"Memory"是否指的是AssetBundle名称,因为我的名称是"log",所以它指的是内存问题吗?我们非常感谢您对理解和修复此错误的任何帮助。

我认为您的问题与构建捆绑包时使用的压缩有关。您可能需要使用LoadFromMemorySync。https://docs.unity3d.com/ScriptReference/AssetBundle.LoadFromMemoryAsync.html

因此,我已经通过使用UnityWebRequestAssetBundle克服了错误,如图所示(由derHugo推荐(。

我最初使用一个简单的FTP服务器来访问资产,它不允许我下载它们(从Unity下载,但在浏览器中运行良好(。然后,我转而使用Flask服务器,它的工作方式很有魅力。

请注意,像我一样发现这一点的人;如果你在webgl中使用assetbundles,你需要确保assetbundle是未压缩的(BuildAssetBundleOptions.UncompressedAssetBundle(。文档中提到了这一点,但很容易错过,默认值是LZMA。

最新更新