Quick answer: Disable gameplay ActionMap before starting async load. Reset to clear held state. Switch to a Loading map for skip/cancel only. Re-enable gameplay map after scene activation.
Player presses Jump during a loading screen. New scene loads, character jumps immediately. Queued action fired on activation.
The Symptom
Player actions trigger from buffered input on scene transitions. Camera moves, player jumps, abilities fire all at once.
The Fix
public class SceneTransition : MonoBehaviour
{
public InputActionAsset asset;
public CanvasGroup loadingScreen;
public IEnumerator LoadScene(string name)
{
var gameplay = asset.FindActionMap("Gameplay");
gameplay.Disable();
foreach (var a in gameplay.actions) a.Reset();
loadingScreen.alpha = 1;
var op = SceneManager.LoadSceneAsync(name);
while (!op.isDone) yield return null;
loadingScreen.alpha = 0;
gameplay.Enable();
}
}
Disable + Reset before load. Enable after activation. Held keys must be released before they re-trigger.
Verifying
Spam keys during a load. New scene loads with no queued actions. Player must press fresh to act.
“Disable. Reset. Switch maps. Load. Re-enable. Clean.”
Related Issues
For ActionMap pause leak, see pause leak. For action double-fire, see double-fire.
No queued actions. Clean transitions.