1
resposta

[Bug] meu projeto corrompeu e estou com problema no código

olá atualmente eu estou no capítulo 1 do curso na aula 10 e hoje fui abrir o projeto para continuar a aula e ele parecia corrompido. não sei o que fazer para recuperar o projeto pois já tentei de tudo Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Além disso eu estava com bug no meu condigo Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Ola, colega!

O que está acontecendo

O erro principal é este:

CS0120 – Uma referência de objeto é necessária para o campo, método ou propriedade InputManager.Movement não estática

No seu script PlayerBehaviour, você está acessando assim:

InputManager.Movement

Isso só funciona se Movement for static.
Mas pelo erro, ele não é estático, ou seja, pertence a uma instância de InputManager, não à classe em si.

Por causa disso, a Unity não consegue compilar o projeto e abre aquele alerta pedindo para entrar em Safe Mode.

Por que a Unity pede Safe Mode?

Quando há erro de compilação, a Unity não consegue importar os scripts corretamente.
O Safe Mode serve justamente para você corrigir o código sem o projeto quebrar de vez.

Pode entrar em Enter Safe Mode sem medo.

Como corrigir

Opção 1 — Tornar Movement estático (se for a ideia do curso)

No script InputManager, algo assim:

public static float Movement { get; private set; }

E no Update() dele:

Movement = Input.GetAxis("Horizontal");

Aí o seu código atual funciona normalmente:

float moveDirection = InputManager.Movement * Time.deltaTime * moveSeed;

Opção 2 Usar uma instância de InputManager

Se não for para ser estático, você precisa de uma referência:

[SerializeField] private InputManager inputManager;

E usar assim:

float moveDirection = inputManager.Movement * Time.deltaTime * moveSeed;

(lembrando de arrastar o InputManager no Inspector)

Abçs;