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.