Customize and upgrade a vehicle
Goal: let the player paint a vehicle and keep that color for the next run. Then add wheels, accessories and performance upgrades.
Requirements
Start with a working RCCP vehicle and the current UI Canvas. Use your own copy of the vehicle prefab. Stop Play Mode before you configure it.
A manager controls one category of customization, for example paint or wheels. The loadout of a vehicle is the saved set of colors, fitted parts and upgrade levels.
Add the Customizer
- Select the vehicle root in the Hierarchy.
- In the module grid of the vehicle, add Customizer from Features. Vehicle Setup explains the module grid.
- Open the Inspector of the Customizer and enter a stable, unique Save slot name.
- For this first test, enable Load the saved set and Save changes automatically. Keep Apply when at Start.
Check: the Customizer shows its list of category managers. The Customizer alone gives saving and initialization. Add a manager for each feature that you want.
NOTE: Set up automatically has no effect in this version. The managers start at the time that Apply when sets.
Give vehicles different save slot names if they must keep different choices. If the name is empty, RCCP makes a random key at runtime. Then the next session cannot find the same loadout. If you rename the vehicle object, the save slot name does not change.
Open the screenshot at full size.
- Enter your own stable name.
- For this tutorial, enable Save changes automatically and Load the saved set.
- Click Select to open the Paint Manager.
The example vehicle has all managers except the Siren Manager. If a manager is missing, the Inspector shows Create in place of Select.
Configure body paint
- In the Customizer Inspector, find Paint Manager. If it is missing, click Create. Then click Select to open it.
- Select a painter below the manager, or click Create New Painter.
- Assign the exact material of the paintable body panels to Paint Material. To find this asset, select a body mesh and examine the Materials list of its renderer.
- Set Shader Keyword to the color property of the shader. The included car paint shader uses
_BaseColor. If your shader uses a different property, enter that name. - If other panels use a different material, add a painter for that material. After you edit the painters, click Get All Painters on the Paint Manager.
- Save the scene and the changes to your vehicle prefab.
Check: each paintable material has a painter. The painter finds the material on all renderers of this vehicle. The painter paints runtime instances of the material. The shared material asset does not change.
Open the screenshot at full size. 1 must be the material of your vehicle. 2 is _BaseColor for the included car paint shader. The Inspector label is Shader Keyword, but the field needs the name of a color property, not a shader keyword.
Test painting and saving
- Click Play with this vehicle registered as the player.
- Open the customization panel of the canvas and select a paint color.
- Stop Play Mode, then start it again.
Check: the correct panels change color, and the saved color comes back on the next run.
NOTE: Automatic customization saves use PlayerPrefs, the local settings store of Unity. Unity discards scene changes when Play Mode stops, but these saved choices stay.
If your game needs a payment or an Apply button, disable Save changes automatically. Then call the save from your game flow after the player confirms the choice. The RCCP customization settings do not include purchase rules for your shop.
Canvas sliders show changes immediately. With automatic saving enabled, a slider saves after a short pause or when the control is disabled.
Paint or saving does not work
| Symptom | What to examine |
|---|---|
| No color changes | The painter needs the exact body material and a valid color property name in Shader Keyword. |
| Only some panels change | Add a painter for each other paintable material. |
| Painting stops after you replace a material | Set Paint Material to the new material. |
| Another vehicle gets the same saved choices | Give each vehicle a different Save slot name. |
| Choices are lost on the next run | Use a stable save slot name that is not empty. Enable automatic saving and loading. Make sure that no other code clears PlayerPrefs. |
| The changes of the manager do not show | Make sure that the manager exists. Make sure that Apply when starts it, or that your integration calls Initialize(). |
| A saved wheel, spoiler, siren, decal or neon is missing, and the Console shows a warning | The list of that part does not contain the saved option. The vehicle gets its stock wheels, or that slot stays empty. Select a different option. |
Add wheels, spoilers, and sirens
First, create the necessary managers from the Customizer Inspector.
| Category | How to add options |
|---|---|
| Wheels | Open Tools > BoneCracker Games > Realistic Car Controller Pro 2 > Settings > Wheel Presets and add wheel prefabs to Wheels. All vehicles share this list. A wheel change can set the wheel radius from the wheel model. |
| Spoilers | Put each model below the Spoiler Manager and add RCCP Vehicle Upgrade Spoiler to it. Then click Get All Spoilers on the Spoiler Manager. |
| Sirens | Put each light rig below the Siren Manager and add RCCP Vehicle Upgrade Siren to it. Then click Get All Sirens on the Siren Manager. |
The accessory components are in Add Component > BoneCracker Games > Realistic Car Controller Pro 2 > Customization. Only the selected spoiler or siren stays active. An index of -1 means the stock wheels, or no spoiler or siren. RCCP also saves a -1 choice, so the old part does not come back in the next session. If you select the stock wheels, the stock radius comes back. Only the wheel parts that the wheel change hid show again.
For wheel settings, see Wheels and tires. For code access, see Wheel API.
If Auto-calculate differential ratio is enabled, a change of wheel radius also calculates the final drive again. Manual final drive ratios do not change.
If the spoiler models must keep their own finish, disable Paint Spoilers on the Spoiler Manager. A spoiler gets the paint color only when its Index selects an existing material slot. The default -1 does not paint the spoiler. If the material does not have the set color property, the spoiler uses _Color if available. Hide All and Show All on the Customizer help you examine the accessory models.
Add decals and neons
Decals and neons use projected materials and need URP or HDRP. Before you configure them, read Render Pipelines. On the Built-in render pipeline, RCCP can save the selection, but no projector effect shows.
Create a Decal Manager or Neon Manager. Decals holds the materials for the front, back, left and right slots. Each slot has its own selected index. Neons holds the underglow materials and one selected index. After you assign options, test the projection position on your model.
If you select None, RCCP removes the neon, disables its projector and clears the saved selection.
Add performance upgrades
Create the Upgrade Manager to give four upgrade categories. Each category goes from level 0 (stock) to level 5. Efficiency on each upgrade object sets the multiplier at level 5. The levels between them divide the increase into equal steps.
| Upgrade | Changed setting |
|---|---|
| Engine | Maximum engine torque. |
| Handling | Traction helper strength. Needs the Stability module. |
| Brake | Brake torque on each axle, scaled from the value of that axle. A reset sets each axle back to its own value. |
| Speed | The Top speed target of the Engine module and the differential ratios. The upgrade does not limit the vehicle speed. |
For example, an Efficiency of 1.2 makes the level 5 target 120% of the captured stock value. This value is a setting multiplier. The multiplier does not promise a measured improvement in lap time or top speed. Engine and speed upgrades need an Engine module.
Complete the basic tuning of the vehicle before you test upgrades. If other systems change a setting, see Assists and Presets.
The Speed upgrade captures the current Top speed of the Engine and the ratio of each differential. The upgrade captures these values when the instance applies a level for the first time. Old hidden speed values do not replace your current tuning. When the upgrade initializes again, it applies saved levels from the same captured values.
If Auto-calculate differential ratio is enabled, speed upgrades calculate the gearing again from Top speed. If this option is disabled, speed upgrades divide each captured stock Final drive ratio by the current speed multiplier. In that case, level 0 and Restore keep the captured stock ratios.
Change suspension and colors
The Customization Manager controls the front and rear spring force, damping, travel, ride height and camber. The manager also controls the headlight color and the tire smoke color. Ride height 0 is fully compressed (lowest), and 1 is fully extended (highest). Ride height is the inverse of Rest position.
Suspension changes go through the wheel system. Spring and damper settings use the effective values on the wheels. The manager saves these values and calculates unscaled base values internally. If you apply the same preset again, the selected values do not change. A different preset scales those base values. Restore uses the captured effective values.
For suspension settings, see Wheels and tires. If the vehicle has old wheel data, do the wheel-data upgrade procedure before you edit the new settings.
The Customization Manager applies its start values and does not save a new loadout. Its Restore() call also does not change the save slot. Explicit suspension, camber and color changes use the Save changes automatically setting.
Some tuning data fields store choices but do not apply them. These fields are ABS, ESP, TCS, steering helper, nitrous, rev limiter, automatic transmission, the shift and clutch thresholds, and the counter-steering and steering limiter switches. Configure these features on the modules of the vehicle. The stored tuning data does not enable them.
Loadout settings and timing
| Customizer setting | Purpose |
|---|---|
| Fitted parts | The current loadout data. |
| Save changes automatically | Saves each change immediately. Canvas sliders combine many preview changes into one save. Disable this option for a custom save flow. |
| Load the saved set | Loads the stored loadout when the vehicle starts. |
| Apply when | Selects Awake, On Enable, Start or Delayed With Fixed Update initialization. Wheel and performance upgrades always wait until Start creates the wheel pivots. |
| Customizer setting | Purpose |
|---|---|
| Set up automatically | Let the managers initialize themselves. Network integrations may need to manage this. |
For a reset button, call Delete() on the Customizer of the vehicle. This call clears the saved choice and restores the defaults. For a custom save and apply flow, the same component has Save(), Load() and Initialize().
For multiplayer, follow Multiplayer so local saves and network state do not compete.
Next steps
- Demo Content — find the included vehicle prefabs.
- UI and HUD — change the style of the customization interface.
- Field Reference — the settings of each category.

