无法解压缩资产捆绑包“内存”的数据,-- Unity3D资产捆绑包加载

vof42yt1  于 2023-01-09  发布在  其他
关注(0)|答案(3)|浏览(230)
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'的数据”。我不确定'Memory'是否指的是AssetBundle名称,因为我的名称称为'log',所以它是否指的是内存问题?非常感谢您帮助了解此错误并修复它。

mzmfm0qo

mzmfm0qo1#

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

hwamh0ep

hwamh0ep2#

所以,我已经通过使用UnityWebRequestAssetBundle as shown here(derHugo推荐的)克服了这个错误。
我最初使用一个简单的FTP服务器来访问资产,它不允许我下载它们(从Unity下载,但在浏览器中运行良好)。然后我改用Flask服务器,它工作起来很有魅力。

isr3a4wc

isr3a4wc3#

注意像我一样发现这个的人;如果你使用的是webgl的资产捆绑包,你需要确保资产捆绑包是未压缩的(BuildAssetBundleOptions.UncompressedAssetBundle),文档中提到了这一点,但是很容易忽略,默认值是LZMA。

相关问题