Quick answer: Set button.interactable = false for transition; restore after. Or guard handler with a busy flag.

Click Start. Scene loads. User clicks again during fade; second handler fires; scene loads twice or errors.

The Fix

public Button StartButton;
bool _busy;

public async void OnStartClick() {
    if (_busy) return;
    _busy = true;
    StartButton.interactable = false;

    await FadeOut();
    await SceneManager.LoadSceneAsync("Game");
}

Disabled button + busy flag prevents repeat. Restore on returning to menu.

Verifying

Mash button: only first click runs. Without flag: multiple loads queued.

“Disable. Guard. One run.”

Related Issues

For Graphic Raycaster, see Raycaster. For TMP color, see TMP color.

Disable. One click.