Bom dia, O erro da imagem (“Can’t add script… class cannot be found”)
Esse erro quase nunca é o problema real. Ele aparece quando:
- o script não compilou
- ou o nome do arquivo não bate com o nome da classe
- ou existe qualquer erro de compilação em qualquer script do projeto, mesmo que não seja nesse arquivo
Quando isso acontece, a Unity simplesmente não “enxerga” a classe PlayerAnim, então ela diz que não consegue adicioná-la.
Ou seja: se a Unity não compilou tudo, ela não deixa adicionar script nenhum.
O código que você colou não está igual ao da aula, mesmo que pareça.
Erro 1 – Código de movimento no script errado
Na aula, o PlayerAnim NÃO tem código de movimento nem Translate.
Esse trecho não deveria estar no PlayerAnim:
float moveDirection =
GameManager.Instance.InputManager.Movement;
transform.Translate(moveDirection *
Time.deltaTime * moveSpeed, 0, 0);
if (moveDirection < 0)
{
transform.localScale = new Vector3(-1, 1, 1);
}
else if (moveDirection > 0)
{
transform.localScale = Vector3.one
}
Esse código é do PlayerBehavior, não do PlayerAnim.
O PlayerAnim só controla animação, nada de movimento.
Erro 2 – moveSpeed não existe nesse script
No seu PlayerAnim, você usa:
Time.deltaTime * moveSpeed
Mas não existe nenhuma variável moveSpeed declarada nesse script.
Isso já é erro de compilação.
Erro 3 – Falta ponto e vírgula
Aqui também tem um erro de sintaxe:
transform.localScale = Vector3.one
Faltou o ; no final:
transform.localScale = Vector3.one;
Esse erro sozinho já impede a Unity de compilar tudo.
Como o PlayerAnim deve ficar de verdade
O PlayerAnim correto, como mostrado na aula:
using UnityEngine;
public class PlayerAnim : MonoBehaviour
{
private Animator animator;
private void Awake()
{
animator = GetComponent<Animator>();
}
private void Update()
{
bool isMoving = GameManager.Instance.InputManager.Movement != 0;
animator.SetBool("isMoving", isMoving);
}
}
Nada de Translate, nada de moveSpeed, nada de localScale.
O que fazer agora (passo a passo)
Abra o script PlayerAnim
Apague tudo relacionado a:
- movimento
TranslatemoveSpeedlocalScale
Deixe apenas o controle do Animator
Salve o arquivo
Volte para a Unity e aguarde a recompilação
Veja se não aparece nenhum erro no Console
Agora tente adicionar o PlayerAnim no Player novamente
Dica importante (pra evitar esse tipo de dor de cabeça)
Se a Unity não deixa adicionar um script, o problema não é o Inspector
É sempre erro de compilação
Mesmo que o Console esteja “limpo”, force:
- salvar todos os scripts
- ou reabrir a Unity
Abçs;