How to select and Spawn different pawn for each player using UMG

I’ve been bothered by this for a week, I checked this tutorial on community wiki and this one. the .txt file solution does not really help, since I want to select character from UserWidget and call it later in controller ServerSetPawn using IMenuInterface.

  1. I’m not very familiar with struct, can I also declare my switch pawn function in STRUCT?
  2. Can IMenuInterface pass the argument of ServerSetPawnA(), …PawnB(), …PawnC() to ServerSetPawnA,B,C() in MyPlayerController> For example, (UserWidget)Button->Onclicked(…::SetPawnA), MenuInterface->ServerSetPawnA(); (PlayerController) ServerSetPawnA();
  3. I know I can possess a different pawn after postlogin into lobby, but my goal is to select at MainMenu level and spawned into lobby already with different pawns.

I just want to know can I achieve this with (CharacterButtonClicked) MenuInterface, PlayerController, and Gamemode in a flow.

Never mind, I found it out myself, Menuinterface has nothing to do with playercontroller or gamemode. In case any one want to do something similar, create a save game.