Loading.ReadObject CPU Spike

when load a scene of my game, after a few seconds of loading, i noticed a HUGE spike in CPU usage cause by “Loading.ReadObject”.

is there a way to read all object in the scene on the start? and receiving a message or something when all objects have been read?

than i can add that part to the loading screen.

Old thread but I see the same thing on 4.3. I’m pretty sure this is the reason for my game crashes on Android. The process consumes ~732ms. What could possible take that long to read in the simple game? I’m not sure, but a little more documentation on this would be awesome!

Taking a look at the profiler I see that the call is question is a subroutine of “Application.LoadLevelAsync Integrate”. So looking a look at my level loading, I was using the simple “levelLoad” function. I changed that to the following and have since eliminated the crashes! Now this has not address the lengthy function call, but the fact that it’s no asynchronous hides this, since it’s processed on a background thread.

So make the below call to start loading the level:


Then the “LoadLevelAsynchronously” loads the level, but waits until is completely loaded before displaying:

IEnumerator LoadLevelAsynchronously()
	AsyncOperation async = Application.LoadLevelAsync("Dev");
	if (Application.isLoadingLevel) 
		Debug.Log ("Loading complete");
		yield return async;

I met the same cpu spike about Loading.ReadObject in profiler today. My situation is to call AssetBundle.Load(string), it only cause the hipcup on Android device,and i will call Resources.UnloadUnusedAssets() after the asset is not needed.

My solution is load all the frequent assets on the start and reference them,you don’t need change your code about load assets,because assetbundle load the assets from it’s catche,and Resources.UnloadUnusedAssets() will not release the assets you reference.

I think ,IO of some android device is not better than ios device.