# Holder

> Global access to the default Adaptive Performance interface and lifecycle management controls.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.AdaptivePerformance](/engine/6000.6/script-reference/unityengine/adaptiveperformance.md)
* **Assembly:** UnityEngine.AdaptivePerformanceModule

```csharp
public static class Holder
```

## Remarks

The `Holder` class provides a singleton pattern for accessing Adaptive Performance functionality. Use this class to manually control the Adaptive Performance lifecycle. You can also use it to access the main interface when **Initialize Adaptive Performance on Startup** is disabled in the Adaptive Performance settings.

The [Holder.Instance](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/instance.md) property becomes available after successful initialization and remains available until deinitialization completes.

The following example shows how to manually initialize Adaptive Performance and access thermal status.

## Examples

```csharp
using UnityEngine;
using UnityEngine.AdaptivePerformance;

public class AdaptivePerformanceExample : MonoBehaviour
{
    void Start()
    {
        // Initialize Adaptive Performance manually if Adaptive Performance isn't already initialized.
        if (Holder.Instance == null)
        {
            Holder.Initialize();
        }

        // Access thermal status after initialization.
        IAdaptivePerformance adaptivePerformance = Holder.Instance;
        if (adaptivePerformance != null && adaptivePerformance.Initialized)
        {
            IThermalStatus thermalStatus = adaptivePerformance.ThermalStatus;
            // The TemperatureLevel is located inside the ThermalMetrics struct.
            float currentTemperature = thermalStatus.ThermalMetrics.TemperatureLevel;
            Debug.Log($"Temperature level: {currentTemperature}");
        }
    }
}
```

## Static Properties

| Property                                                                                       | Description                                                                                               |
| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| [Instance](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/instance.md) | The default Adaptive Performance interface instance for accessing all Adaptive Performance functionality. |

## Static Methods

| Method                                                                                                 | Description                                                                    |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
| [Deinitialize](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/deinitialize.md) | Stops Adaptive Performance and cleans up all associated resources and objects. |
| [Initialize](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/initialize.md)     | Initializes Adaptive Performance and makes the instance available for use.     |

## Static Events

| Member                                                                                                                   | Description                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| [LifecycleEventHandler](/engine/6000.6/script-reference/unityengine/adaptiveperformance/holder/lifecycleeventhandler.md) | Occurs when the Adaptive Performance instance is created or destroyed during lifecycle changes. |
