1
resposta

[Bug] Problema no codigo de C#

Eu estou Na terceira aula do Curso:Unity: criando um jogo metroidvania 2D
O problema é que esta dando um erro que a minha classe"Controle do jogador" não tem uma definição a variavel "Movement".Eu ja estou com esse problema á muito tempo e não sei como resolver.
Esse é problema:
Assets\Scripts\Imputs\Imput Manager.cs(6,49): error CS1061: 'Controlesdojogador' does not contain a definition for 'Movement' and no accessible extension method 'Movement' accepting a first argument of type 'Controlesdojogador' could be found (are you missing a using directive or an assembly reference?)

Como posso solucionalo?

1 resposta

Ola!Esse erro acontece porque sua classe Controlesdojogador não tem nenhuma propriedade ou método chamado Movement, mas o código que você escreveu no Imput Manager está tentando acessar isso.

Isso pode ter acontecido por alguns motivos comuns:

  1. Nome incorreto: talvez no seu código do Controle do jogador o método/propriedade tenha outro nome (por exemplo: Move, Mover, Andar, etc.), mas no Imput Manager você está chamando de Movement.

  2. Classe gerada pelo Input System: se você está usando o Input System da Unity, a classe gerada pelo Input Actions geralmente cria maps e actions. Exemplo:

    var controls = new Controlesdojogador();
    controls.Player.Move.performed += ctx => { ... };
    

    Ou seja, normalmente não é Movement, mas sim algo como Move.

  3. Erro de digitação: confira se está exatamente igual (maiúsculas/minúsculas contam).
    Exemplo: Movementmovement.

Como resolver

  • Abra a classe Controlesdojogador e veja o nome exato da action que você configurou no Input System.

  • Se a action no Input Actions se chama Move, então no código deve ser:

    controlesdojogador.Player.Move
    

    e não Movement.


Sugestão: copie aqui o trecho da sua classe Controlesdojogador (ou mostre como está configurado o Input Action no Unity) que eu te digo exatamente como corrigir a chamada.