Yeah, it’s not clear what you’re asking. I will leave a few suggestions though.
If you’re incrementing the enemy count as you’re playing, you’ll run into a problem that you can destroy all the current enemies before the next enemies spawn. That means the enemy count will be zero very early on before all the enemies had a chance to spawn in. To avoid that, you need a proper end game flag. You need something to tell your code that no more enemies will be spawned. ONLY THEN should you check the enemy count.
For “ending the level”, I usually pause it. You can still display widgets. This lets me restart the level if I want, or unload the current level and load another one. My personal experience is that unloading and loading levels is a real PITA in UE. You’d think it’d be easier. You have to unpause, unload, wait for confirmation that it unloaded, then load new level, wait for confirmation, etc. I also had to manually remove all actors that were spawned in, but not destroyed (ie. if the player dies). But I’m in C++. I think in Blueprints, it might be a bit easier.