Customization menus

I want to make a menu like the vehicle customisation menus in gta v where it shows a list of all of the option (performance, visual, paint etc) then when I click on one, it changes the list to all of the body parts or colours or upgrades.

Does anyone have any best practices as I am having trouble with the buttons as sometimes it changes a static mesh and sometimes it changes a colour they might also change the menu to show a different list. Can anyone help with this please?

Do I pass a reference of my vehicle blueprint to the buttons so they can change meshes and colours on my vehicle?

To store data: look into Data Assets. Then your ui (or blueprint of car) gets name or soft pointer to that data asset and loads it. This will force you to use data driven code, and you just need to make parts for single car (for testing).

So when you have that data asset swapping parts on car, doing widgets should be easy.

Until your data asset reading and swapping code is done just bind two keys that swap between two data assets.

And game play tags are great for what you need:

  • you code/remember data assets as “game play tags” for eg: Fiat_900.red.some_part
  • then you have function (or data table) that translates those game play tags into soft pointers to real data_asset to load
  • then when data asset is loaded your car model applies that stuff

last aadvice, is use parent class for your cars:

  • code all swapping steering and adjusting how car drives, in parent class. Like all code should be in parent class (that has some simple debug mesh as model)
  • create all what is visual in child class. That would be getting list of parts, then getting meshes (from data assets) then swapping them (and hidding parent debug car).