如何在Unity3D中组织资源加载和卸载?

时间:2015-12-06 13:15:07

标签: ios memory-management unity3d resources assetbundle

我有340个精灵,我想像漫画书一样展示它们。漫画书共有39章,每章约有6-10张图片。

我注意到如果文件resources.assets大于2Gb,Unity不允许从Resources文件夹加载资源,所以我将所有资源分成两组:第一组图像保留在Resources文件夹中,第二组图像保留在Resources文件夹中被合并到AssetBundle。

所以现在如果我想看第一章它会加载第一章的图片,如果我继续选择第二章,它会从第一章卸载图像并从第二章加载图像。但如果我想再次看到第一章,那么有两种情况。

如果第一章中的图像是从Resources文件夹加载的 - 好吧,它只是再加载它们。

如果图像是从AssetBundle加载的 - 它不能再次加载这些图像,因为当我从第一章切换到第二章时,它从第一章卸载了资源,现在它们已被删除。

那么如何使用AssetBundle修复第二种情况并删除资源?我一直无法将所有未使用的资源保留在内存中。

1 个答案:

答案 0 :(得分:1)

只需使用WWW类再次加载资产包,就像之前一样。你必须让你的应用等到加载完成。您应该在加载时显示加载弹出窗口。

在协程中有类似的东西:

WWW www = WWW.LoadFromCacheOrDownload (url, 1);
yield return www;
AssetBundle bundle = www.assetBundle;
AssetBundleRequest request = bundle.LoadAssetAsync ("img1", typeof(Texture2D));
yield return request;
Texture2D img = request.asset as Texture2D ;

http://docs.unity3d.com/Manual/LoadingAssetBundles.html