Back to mainmenu to Start again another match

I’m new in developing a multiplayer game in Unity using Netcode for GameObjects (NGO) and Unity Relay for networking. I’ve implemented a system where players can host a game, select characters, and start a match. However, I’m running into an issue when transitioning between the gameplay and main menu scenes.

The Problem:
After quitting to the main menu and starting a new match, the player does not spawn. Additionally, I noticed the following behaviors:

Duplicate NetworkManager Instances: When returning to the main menu and starting a new session, I sometimes end up with multiple instances of the NetworkManager.

Player Spawn Issues: The player spawn logic doesn’t execute during the second session.

Network State Persistence: The NetworkManager and other network-related objects (like my custom HostManager) seem to persist across scenes despite calling NetworkManager.Singleton.Shutdown().

You have the NetworkManager in the main menu scene, or the game scene, or both. Thus every time you load it, you create a new instance.

Put it in a scene that loads before the main menu. And no matter what you saw online, NEVER destroy the NetworkManager object! This has proven itself to always lead to all sorts of problems. It is a singleton. A singleton should never be destroyed.

Details and code please!

Do you put them in DontDestroyOnLoad? Do you use static references?

Side note: I do not see your Shutdown code testing for conditions that the shutdown has completed. This also can lead to errors. You can only start another session after the IsServer, IsHost, IsClient flags (respectively) have been set back to false - this does not happen instantly for at least the server/host.