错误加载assetbundle in unity

时间:2017-06-29 03:57:30

标签: c# unity3d unity5 assetbundle

我将从错误本身开始。第一个是:表达式断言失败:' m_UncompressedBlocksOffsets [blockInd]< = from + dstPos&& m_UncompressedBlocksOffsets [blockInd] + uncompressedBlockSize> = from + dstPos' UnityEngine.AssetBundle:LoadFromFile(字符串)

后续:无法解压缩AssetBundle&D; /Unity/projects/PQv0.10/Assets/AssetBundles/spritesbundle'的数据。 UnityEngine.AssetBundle:LoadFromFile(字符串)

我总是只为项目使用资源文件夹,但我当前的项目已经超出了该方法可以容纳的范围。所以我试图将资产(在这种情况下是5000左右的精灵)卸载到资产捆绑中,并在运行时根据需要加载它们。我想我可以获得对assetbundle的引用,然后调用assetbundle.LoadAsset(assetname),替换旧的Resources.Load调用。这是我试图制作持续出错的assetbundle引用:

AssetBundle sprites;
void loadSprites()
{
    sprites = AssetBundle.LoadFromFile(Application.dataPath + "/AssetBundles/spritesbundle");                //          " + bundleName);
    if (!sprites) {
        Debug.Log("failed to load assetbundle");
    }
}

对于尽职调查,这里也是我用来创建该资产捆绑的代码。它可以简单地在我的项目中搜索png,然后将它们打包到assetsbundle中:

public static void SaveSpecificAssets()
{
    AssetBundleBuild build = new AssetBundleBuild();
    build.assetBundleName = "spritesBundle";

    string[] files = AssetDatabase.GetAllAssetPaths();
    List<string> validFiles = new List<string>();
    foreach (string file in files)
    {
        if (file.EndsWith(".png")) validFiles.Add(file);
    }

    build.assetNames = validFiles.ToArray();

    BuildPipeline.BuildAssetBundles("Assets/AssetBundles", new AssetBundleBuild[1] { build }, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}

assetbundle构建没有错误,并出现在它应该的目录中。除了尝试加载它时出现的错误之外,我没有任何迹象表明它有问题。它生成的清单包含适当的项目,所以我认为它至少按预期工作。如果我遗漏了任何相关信息,请指出并且我会尝试提供它。

这是我用来代替loadSprites()的测试协程,用于测试是否有所不同:

IEnumerator testLoader()
{
    WWW www = WWW.LoadFromCacheOrDownload("file:///" + Application.dataPath + "/AssetBundles/spritesbundle", 1);
    yield return www;

    sprites = www.assetBundle;
}

1 个答案:

答案 0 :(得分:1)

试试这个,对于项目文件夹中的所有PNG,选择它们并通过编辑器将它们添加到AssetBundle,然后使用

构建
BuildPipeline.BuildAssetBundles("Assets/AssetBundles",BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);

然后尝试加载捆绑包并查看它是否显示错误。

另外,请查看清单以查看您列出的所有文件是否都已列出