How to use a UMG throbber to indicate loading?

Could someone explain the general way throbber works to me?
Say, I have a C++ loop that utilize callable UFUNCTION to spawn actors. That’s a heavy task and main game thread freezes until all actors are spawned.
How can I keep throbber spinning if game thread is hanging? Should I spawn actors on tick to prevent game hanging, or is there any multi threaded UMG loading widgets to give spawning function all power?

You can async load the actors you are going to spawn and only spawn them once they are loaded, since the freezing is caused by the assets being loaded, not the spawning itself (unless you’re spawning a huge number of already-loaded actors all at once). Otherwise there’s not much you can do out of the box.

Hey, thanks for input.
Unfortunately, what you are suggesting would just decrease game-start load-time since all references would be loaded in memory without assets.
What is actually happening in my situation is that I have a big amount of same actors (with same assets) that I need to load at the same time.
And I’m kinda OK with big load-time of 1000 actors, but I just want to give player and indicator that loading process is going on and just to spin throbber a little bit.

For example, how does popular games manage make a slide show during assets loading?

I had to do this last week, I was thinking of ways to get my splash screen to load up the main screen whilst still displaying a throbber. in the end I think i was over complicating things I Simply called my splash widget to come up first on my main level, and then once I clicked a button it would display a throbber with a 2 second delay before removing widget. since scene was loading straight after widget was displayed, by the time the user clicked the button the scene was ready for use. it worked for me since loading time was no more than 3 seconds, depends how long your scene takes to load?

So your freezing is caused by spawning 1000 instances of the same actor? You could just space out the spawning by a few milliseconds by introducing a delay in your loop, which should prevent complete freezing. You can/should still async load a reference to that actor first though if you don’t want any freezing at all at the start, but you can just do that by having your spawning logic in a streaming level and just stream that level in (and your persistent level is basically empty except for some streaming logic).

And if you know how many actors you are trying to spawn, you could easily track the % of how much of the spawning is done and display that in a progress bar.

Well, at first I’ve really done so and made a “deferred spawn” function which basically spawned few actors per tick but that doesn’t work if you want something smooth to happen on the top of that spawning.
Problem is that when you queue an actor to be spawned, that would happen on next tick and you never know how much time that would take.
Sometimes you can queue 5 actors to get spawned on next tick and that wouldn’t drop FPS below 60, sometimes tick is just overloaded with other needed stuff and spawning even 1 actor would drop fps to 30-40 of a tick which is eyesore.
Imagine every few frames dropping to 30-40 fps upon spawning single actor. Not a pleasant experience, but that what I’ve got on my Mac and Linux machine (Windows worked that out great without any drops for some reason).

So, say, if I would want to implement a slideshow while something is loading, that would be great for an instant image changing since player wouldn’t notice fps drops.
If there were some smoothly changing slides, that would be not pleasant to see since FPS would be dropping.

Also, I don’t really understand how async asset load would completely remove freezing.
As far as I’ve understood, the problem this method solves is avoiding loading reference tree with all assets at load-time.
I.E. if my spawning tool got references to 100 different actors with unique assets, all of them would be loaded at memory on the start.
Using async load method you can only load assets when you need to.
So even if I do async asset load, I would still need to spawn actor at the world and the freeze is produced by pushing an asset into world, I believe? I would be glad to be proven wrong since I don’t completely understand this.
P.S. Sorry for big amount of text.
P.S.S. That’s really cool to see that forum is still alive and some discussion can go on since UE Answers service seems nonexistent to me right now.

In your case the freeze is caused by spawning many actors, because spawning is an expensive task. The Async load aspect is just in case you have different actors like you mentioned.

But yes you can just go with a slideshow in UMG if you want, that should solve the problem. There’s no real way to spawn 1000 actors in a short time without major FPS drops.