无法解压缩 AssetBundle 'Memory' 的数据 -- Unity3D AssetBundle 加载

问题描述

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 名称,因为我的名称被称为“日志”,所以它是指内存问题吗?非常感谢您帮助理解此错误并修复它。

解决方法

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

,

因此,我通过使用 UnityWebRequstAssetBundle as shown here(由 derHugo 推荐)克服了错误。

我最初使用一个简单的 FTP 服务器来访问资产,但它不允许我下载它们(从 Unity,但在浏览器中它运行良好)。然后我转而使用 Flask 服务器,它的工作原理非常棒。