How to change the PlayerController of a GameMode when loading the level in runtime?

You usually don’t really want to change player controllers since the logic behind what each input does is not supposed to be defined within them, but if you really need to change them then you should create two game modes, each with different player controller class and pass that information about which game mode to use as option to OpenLevel method.

game=MyGameMode