Main menu and the first level of the game are different levels generally, so the main menu level has its own game mode. If you want the main menu to be in the first level of the game then you just set a camera for the menu > posses that camera at level start and then posses the character when you start the game.
For the game I’m working on now, I created a new GameMode, a new Pawn, and a new PlayerController; all of which are used only for the Main Menu. The Main Menu is a separate map, that has its GameMode set to the GameMode created specifically for the Main Menu. I then set up all the keyboard/mouse and touch controls inside the PlayerController Blueprint; which then communicates with a HUD Blueprint through a Blueprint Interface.
You can change the GameMode by selecting World Settings in the main toolbar, when your Main Menu map is loaded in the Editor. There is a Game Mode section in the World Settings where you can select the appropriate Game Mode for the map.
I did neglect to mention that I started with a Blank map; meaning there were no assets in it when it was created. This allowed me to make my own GameMode, and set the Pawn, PlayerController, and HUD; without there being anything already existing.
I didn’t change any properties (that I recall) in the Pawn or HUD; they are Blueprints of the standard Pawn and HUD class, respectively. Depending on your game’s input, you’ll have to enable/disable mouse and/or touch input within the Default Settings for the PlayerController. But those should be the only settings you have to change.
In the main menu in the game I’m working on, once the player taps or clicks a button to play a game, I save some variables to a save game slot, load a new map (which has its own GameMode), then load the pertinent variables from the save game slot, and initialize gameplay based on those values.
Basically, just loading a new map will take care of “switching” game modes. There’s a node in Blueprint to Load a map by its name. That’s what I use to switch maps.
Also, just remembered: you’ll need to set your main menu map as the map for the project to load first when the game is played. I believe you can find that in the Project Settings.
You can handle all your logic in the same mode if you like, using the same UMGs and menus every where. It’s up to you to find the way that fits best to your needs. Using different GameModes usually helps to not clutter game code with menu code.