[英]errors loading assetbundle in unity
我将从错误本身开始。 第一个是:对表达式的声明失败:'m_UncompressedBlocksOffsets [blockInd] <= from + dstPos && m_UncompressedBlocksOffsets [blockInd] + uncompressedBlockSize> = from + dstPos'UnityEngine.AssetBundle:LoadFromFile(String)
其次:无法为AssetBundle'D:/Unity/projects/PQv0.10/Assets/AssetBundles/spritesbundle'解压缩数据。 UnityEngine.AssetBundle:LoadFromFile(String)
我一直只为我的项目使用资源文件夹,但是我当前的项目已经超出了该方法可以容纳的范围。 因此,我试图将资产(在这种情况下为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并将其打包到assetbundle中:
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;
}
尝试此操作,对于项目文件夹中的所有PNG,将其全部选中,然后通过编辑器将其添加到AssetBundle,然后使用
BuildPipeline.BuildAssetBundles("Assets/AssetBundles",BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
然后尝试加载捆绑软件,看看它是否显示错误。
另外,查看清单以查看是否列出了您想要的所有文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.