# RegisterUIReloadCallback

> Registers a callback to be invoked when the UI is reloaded.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.7/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

## RegisterUIReloadCallback(UIReloadCallback)

Registers a callback to be invoked when the UI is reloaded.

> **Warning:**
>
> **Deprecated.** Use RegisterUIReloadCallback(VersionedUIReloadCallback) instead, which provides a version number so the callback can skip redundant work when the UI has not actually changed.

```csharp
public void RegisterUIReloadCallback(PanelRenderer.UIReloadCallback callback)
```

### Parameters

**** (\[UIReloadCallback]\(/engine/6000.7/script-reference/unityengine/uielements/panelrenderer/uireloadcallback)): The callback to register.

### Remarks

This overload is deprecated. Use [PanelRenderer.RegisterUIReloadCallback](/engine/6000.7/script-reference/unityengine/uielements/panelrenderer/registeruireloadcallback.md) instead, which provides a version number so the callback can skip redundant work when the UI has not actually changed.

## RegisterUIReloadCallback(VersionedUIReloadCallback)

Registers a versioned callback to be invoked when the UI is reloaded.

```csharp
public void RegisterUIReloadCallback(PanelRenderer.VersionedUIReloadCallback callback)
```

### Parameters

**** (\[VersionedUIReloadCallback]\(/engine/6000.7/script-reference/unityengine/uielements/panelrenderer/versioneduireloadcallback)): The callback to register.

### Remarks

This callback will be invoked immediately if the root VisualElement is already initialized, and then every time the UI is reloaded afterwards. Use the version parameter to check if the root VisualElement was actually reloaded since the last time the callback was invoked.

The following example registers a versioned callback to initialize the UI. If the component is repeatedly disabled an re-enabled, the callback version will stay the same. So, the callback can safely skip the initialization logic after the first time.

### Examples

```csharp
using UnityEngine;
using UnityEngine.UIElements;

public class LoadUIWithVersion : MonoBehaviour
{
    PanelRenderer m_PanelRenderer;
    int m_Version = 0;

    void OnEnable()
    {
        m_PanelRenderer = GetComponent<PanelRenderer>();
        m_PanelRenderer.RegisterUIReloadCallback(OnUIReload);
    }

    void OnDisable()
    {
        m_PanelRenderer.UnregisterUIReloadCallback(OnUIReload);
    }

    void OnUIReload(PanelRenderer panelRenderer, VisualElement rootElement, int version)
    {
        if (version == m_Version)
            return; // UI already up-to-date, no need to reload

        m_Version = version;

        // Wire UI here
    }
}
```
