Problem when loading many assetbundles use WWW cache

In an iOS game we’re building, we meet with a problem. We have many assetbundles to use on the avatars in the game, and to load them faster, we use WWW.LoadFromCacheOrDownload() to cache them. But when we load a lot of them in a short time, the game will freeze soon. When debugging the game in XCode, we get informations like

starting www download: file:///var/mobile/Applications/.../Data/Raw/.../<AssetBundleFileName>

Failed to open file at path: /var/mobile/Applications/.../Library/UnityCache/Temp/...

Once it happens, it keeps happening. The freeze issue happens after this error message when the game tries to load another level. And a similar log will be printed for the failure to load the level file.

Another issue related to this one was depicted at http://answers.unity3d.com/questions/484304/a-texturematerial-loading-problem-in-unity-4-iphon.html, where a texture seems to be missing. I guess it’s related to the failure of opening a file called sharedassetsX.asset where X is a number.

What’s interesting is that the problem goes away when we stop using the caching system but, instead, use new WWW() directly.

Any help or suggestion would be appreciated.

We had a similar issue, but never got to the “failed” message, it would just do nothing. The fix was to put in a delay of loading from cache. Simply added a .5f pause before trying to pull from cache and that fixed it.

Our setup preloads assetbundles via the LoadFromCacheOrDownload() method , then immediately unloads them (at this point, they’re cached). Then, we were calling for assets immediately following. We suspected a timing issue on iOS and that seemed to be the case for us.

yield return new WaitForSeconds(.5f);