Support officially lazy-load in WebGL to improve startup?

We are developing a few games on WeChat and facebook. WebGL is a good way to convert out app to H5 platform. Our players are mostly from mobile devices. Compared to other H5 engine like cocos, playcanvas, Unity WebGL game resources are too large.

Then, our programers spend most time(maybe 70%) to split resources to AssetBundle/Addressable. Is it possible to support automatically lazy-load style? Just like Project Tiny, assets include texture, mesh, scenes are loading in background, which is better for H5 game players.

For example:

  1. When loading a scene, It should complete quickly. All GameObjects dependent resources will be loaded later automatically
  2. instantiate(GameObject**)** should return immediately, all its dependent resources will also be loaded later.
  3. All resources should support loading from remote server(CDN)

Unfortunately there is no built-in support for this in classic Unity. The difficulty for providing this is that the already offered API surface area to manipulate assets is large in Unity, and switching to a mechanism that downloads texture/mesh/etc. assets asynchronously would require redesigning large parts of that API, that would break a lot of projects. In Project Tiny it has been possible to design better for this kind of asynchronous loading.

I know some developers implement this kind of loading in C# code manually however, using custom placeholder textures for objects that have not yet completed loading. That allows the project to reason about asset unloaded/loading/loaded status in a way that is hard to bolt on to the existing API design.

Thanks for reply. Yep, one solution we figured out is just what you said: 1. When building project, we replace resources with default assets. 2. In runtime, we lazy-load real assets to display.
Most of our game resources are too large and expectation of load time is less than 10 seconds. So maybe it’s the easier way than to use AssetBundle manually.