How to create a class system

How should I make a class system like in battlefield (Assault, Engineer etc.)??

You need a method to select a class first.
EG Assault = class 1, engineer = class 2 and set a variable with the selected class.

when you go to spawn the player, get the selected class result from an array (the array should contain references to the Blueprints Class Blueprints you want to spawn), once it’s spawned the selected class, you possess it.

but that also means creating multiple blueprint classes - it can also be done with one, but then involves swapping out models and weapon choices etc.

I’ve got a UI menu system for selecting a class but I don’t know where to start when somebody presses a button…

I just gave you a brief breakdown on how to do it.

Lets say someone clicks a button to pick a class - this button must set a variable somewhere, probably in playercontroller. this lets you know what choice the player made.

when they click the “ready” or “spawn” button, you spawn the character the player selected, you then take the result from the spawn node and feed it into a possess node.
this will mean that your player will “possess” this actor/character

eg: myselectedclass=1
get myarrayclass(using myselectedclass as the index, this assumes you’ve populated an array with classes to spawn that match these numbers, which match the values your menu sets)
take the result from myarrayclass into spawn actor

theres more to it, but thats a bit more step by step than my first message.
if you need more help, you’ll need to say with which part, or where it fails… What you are trying to do is very simple.