1
resposta

[Dúvida] Clico no botão reiniciar e dá esse erro

Aparece esse erro quando clico no botão de reiniciar e tento acessar a tela de pause: "MissingReferenceException while executing 'performed' callbacks of 'UI/OpenCloseMenu[/Keyboard/escape]' UnityEngine.InputSystem.LowLevel.NativeInputRuntime/<>c__DisplayClass7_0:b__0 (UnityEngineInternal.Input.NativeInputUpdateType,UnityEngineInternal.Input.NativeInputEventBuffer*) UnityEngineInternal.Input.NativeInputSystem:NotifyUpdate (UnityEngineInternal.Input.NativeInputUpdateType,intptr)".

Porém o jogo continua rodando normal deve me preocupar ou não. Alguém poderia me ajudar com esse erro?

1 resposta

Botão Escape (Input Action) O evento atrelado ao performed do botão Escape (OpenCloseMenu) está tentando acessar algum componente que foi destruído. Exemplo comum:

myInputAction.performed += ctx => menuController.TogglePauseMenu(); Se menuController não existe mais, o erro ocorre.

Inscrição no evento performed fora do ciclo de vida correto Certifique-se de remover os listeners (-=) quando o objeto é desativado ou destruído, especialmente se usar InputAction.performed +=.

Objeto que escuta o input foi destruído, mas o Input ainda está ativo Um padrão seguro é usar OnEnable / OnDisable para registrar e remover os eventos:


void OnEnable() {
    myInputAction.Enable();
    myInputAction.performed += OnPause;
}

void OnDisable() {
    myInputAction.performed -= OnPause;
    myInputAction.Disable();
}
  • Recomendações para resolver: Use OnEnable e OnDisable para habilitar/desabilitar os InputActions;

Antes de usar qualquer referência dentro do performed, cheque se ela é nula;

Se o erro acontece apenas após reiniciar a cena, verifique se há objetos marcados com DontDestroyOnLoad que carregam referências inválidas;

Verifique se o sistema de pause está sendo destruído com a cena.