Static prefabs and final build size

While trying to get a game under the 20MB iOS cellular distribution limit, I noticed that each of my scenes was taking up something like 250KB in the final compressed package file. Every scene uses the same background environment, which is a prefab consisting of a bunch of meshes. It’s a big prefab, and was definitely taking up most of that space. By removing the prefab from every scene and instantiating the prefab at runtime, I was able to save about 200KB in each scene, for a grand total of 2MB saved.

I was puzzled by this, since I thought that using many copies of the same prefab wouldn’t cost me any extra space in the final build. After building a simple test project, I’ve found that I can have as many copies of a non-static prefab as I want, and it won’t affect the build size. But if I mark a prefab as static (which is what I’d do for something like my game’s background environment, which is unmoving and unchanging), every copy of the prefab takes up space in the final build.

Is this intentional? Is there a particular reason for it? For performance reasons, I need all of my background geometry to be marked as static, so the best compromise I’ve found is to keep the prefab dynamic and then use StaticBatchingUtility.Combine at level load time to make the background mesh static. It’s annoying, but it works. Is there a better way to handle this?

Thanks!

I dont know if this is what you want but have you tried:

Load your background in at the startup of the game and then for every scene:

DontDestroyOnLoad (YourBackground);

This will cause that you only have 1 object of the background and re-use that for every scene.
(I cant tell you if it decreases your size, because I havent tested it)

(Im sorry if I completely missed the point :P)