# RegisterVisibilityChangedCallback(Action<GameWindow, VisibilityChangedEventArgs>)

> Registers a callback that is invoked when the window is shown or hidden.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Windowing](/engine/6000.7/script-reference/unityengine/windowing.md)
* **Assembly:** UnityEngine.WindowingModule

```csharp
public void RegisterVisibilityChangedCallback(Action<GameWindow, VisibilityChangedEventArgs> callback)
```

### Parameters

**** (\[Action\<GameWindow, VisibilityChangedEventArgs>]\(https\://learn.microsoft.com/dotnet/api/system.action)): The callback to invoke when the visibility changes, with [GameWindow](/engine/6000.7/script-reference/unityengine/windowing/gamewindow.md) and [VisibilityChangedEventArgs](/engine/6000.7/script-reference/unityengine/windowing/visibilitychangedeventargs.md) as parameters.

### Examples

```csharp
using UnityEngine;
using UnityEngine.Windowing;

public class WindowingTest : MonoBehaviour
{
    GameWindow mainWindow;

    private void Awake()
    {
        mainWindow = GameWindow.Main;
    }

    private void OnEnable()
    {
        // Register the callback
        mainWindow.RegisterVisibilityChangedCallback(WindowVisibilityCallback);
    }

    private void OnDisable()
    {
        // Unregister the callback
        mainWindow.UnregisterVisibilityChangedCallback(WindowVisibilityCallback);
    }

    private void WindowVisibilityCallback(GameWindow window, VisibilityChangedEventArgs args)
    {
        Debug.Log($"Main window visible: {args.visible}");
    }
}
```
