> For the complete documentation index, see [llms.txt](https://distubredone322.gitbook.io/custom-vehicle-controller/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://distubredone322.gitbook.io/custom-vehicle-controller/guides/workflow/creating-vehicle-parts-presets.md).

# Creating Vehicle Parts Presets

## Creating new Presets

CustomVehicleController component can use an instance of a VehiclePartsPresetSO to work.

<div align="left"><figure><img src="https://3780384024-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVPyvySfaC85jUgVcDPRJ%2Fuploads%2FCQxtuPvkchFVokW1O6Ok%2Fimage.png?alt=media&amp;token=df182204-6ef7-4a47-b066-eb70c7230c48" alt="" width="425"><figcaption></figcaption></figure></div>

{% hint style="info" %}
VehiclePartsPresetSO is a scriptable object that holds references to vehicle parts that make up a vehicle. Every part except Nitrous and Force Induction (sub-part of the engine) is required.
{% endhint %}

Make sure the "Use Preset" toggle is turned on (you can change the toggle value either in the inspector or editor window).

Go to Preset Settings in the editor window.

<div align="left"><figure><img src="https://3780384024-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVPyvySfaC85jUgVcDPRJ%2Fuploads%2F7O7gFyt8ZxZCcXQAZdm6%2Fimage.png?alt=media&amp;token=c70e17fc-30d3-46d5-8279-285637888de0" alt="" width="303"><figcaption></figcaption></figure></div>

Enter a preset name and click the "Create New Preset Asset" button.

{% hint style="info" %}
Presets are saved at "CustomVehicleController/VehicleController/VehicleParts/Presets".
{% endhint %}

{% hint style="info" %}
Alternatively, you can create an instance by clicking RMB in the project folder of your choice -> Create -> CustomVehicleController -> VehicleParts -> VehiclePartsPreset.

<img src="https://3780384024-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVPyvySfaC85jUgVcDPRJ%2Fuploads%2Fn2B8LknaxwxZ5cqpUeZ4%2Fimage.png?alt=media&amp;token=920485a3-e707-4aa2-aa4b-7fb2c8afe1b6" alt="" data-size="original">
{% endhint %}

If the GameObject with CustomVehicleController script is selected, the newly created preset instance will be assigned to it.

In this very same foldout you can select every vehicle part you want to make up a preset.

Alternatively, while the instance of vehicle preset is selected, changing object field values from the individual parts editors updates the used part instance.

<div align="left"><figure><img src="https://3780384024-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVPyvySfaC85jUgVcDPRJ%2Fuploads%2F3GvV1L8LFJfFN9CU83Ma%2Fimage.png?alt=media&amp;token=ddeea42d-ee02-4c0a-b133-ca2ac85c6432" alt="" width="394"><figcaption></figcaption></figure></div>

However, as expected, if the same scriptable object is assigned to multiple scripts, changing its values affects every SO user. Because of this, upgrades to individual vehicles are not possible.&#x20;

For this reason, a new approach is required. Learn to use customizable parts sets and update them at runtime [here](/custom-vehicle-controller/guides/workflow/customizable-sets-and-runtime-parts-change.md).
