# Developer Settings

Developer Settings is a class that shows up in **Project Settings** to configure values without needing to create a Blueprint.

**Requirements:**

* Create a class that derives from `UDeveloperSettings`.
* Assign a config category to the class, for example:`[UClass(config: "Game")]`.
* Any property you want to edit must be marked with `PropertyFlags.Config`.
* Object references can't be saved to config. They need to be soft referenced through `TSoftObjectPtr<>` or `TSoftClassPtr<>`.

```csharp
[UClass(config: "Game")]
public partial class UMyDeveloperSettings : UDeveloperSettings
{
    [UProperty(PropertyFlags.EditAnywhere | PropertyFlags.Config)]
    public partial float MyConfigFloat { get; set; }
    
    [UProperty(PropertyFlags.EditAnywhere | PropertyFlags.Config)]
    public partial TSoftObjectPtr<UMaterialInterface> MyConfigMaterial { get; set; }
}
```

If you now open the project settings, you can find your custom developer settings there.

<figure><img src="https://4179970252-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fb0wzkekwYXS1rYy7c988%2Fuploads%2FJMGYw6gO1rVjljAN6Jt1%2FDeveloperSettings.PNG?alt=media&#x26;token=4da405b1-0a17-4cd1-abee-c677d3c28c6f" alt=""><figcaption></figcaption></figure>

How to get the values in C#:

```csharp
public override void BeginPlay()
{
    UMyDeveloperSettings settings = GetDefault<UMyDeveloperSettings>();
    if (settings.MyConfigMaterial.IsValid)
    {
        // Do something with the material
    }
}
```
