Customization menus

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).