# Interface

<figure><img src="https://3846168334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhjeEdzvIH0d5vrHiguxu%2Fuploads%2FiZxiEAz2u89SGSD68zJF%2FScreenshot%202025-01-28%20210712.png?alt=media&#x26;token=cac1a396-cf33-4c8f-8af6-6cead7ed34c4" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
You **must** add the `Interface <your input system>` to the **build settings**.\
For example: if you're using the New Input System you add the `Interface New` to the build settings.
{% endhint %}

The interface is added to any scene using `LoadScene(scene, LoadSceneMode.Additive)`. This will add the interface on top of the current activated scene.

This can be done a couple of different ways. For example; you can add a script to every scene where you want the interface to accessible that looks something like the following:

```csharp
public class AddInterface : MonoBehaviour
{
    private void Start()
    {
        SceneManager.LoadScene("Interface", LoadSceneMode.Additive);
    }
}
```

Alternatively, we can have a `static method` that adds the interface whenever **any** scene is loaded:

```csharp
public static class AddInterface
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    private static void Init()
    {
        SceneManager.LoadScene("Interface", LoadSceneMode.Additive);
    }
}
```

In the interface we can add whatever UI logic we want. For example, as seen in the demo, we can add a `Pause` menu.
