Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Variáveis

Olá! Espero que esteja bem!

Me surgiu uma dúvida de conceito sobre o tipo das variáveis. Quando declaramos uma variável, colocamos:

  1. Se ela é pública ou privada,
  2. O tipo dela (Se é um GameObject, ou um Slider...),
  3. O nome dela/ o que ela é.

O tipo dela não deve ser algo já pré-estabelecido? Como o programa entendeu que o tipo da variável era ControlaJogador se fomos nós que criamos esse script??

2 respostas
solução!

Olá, Julio! Espero que você esteja bem também!

Entendo sua dúvida sobre como o programa reconhece o tipo da variável como ControlaJogador, mesmo sendo um script que você criou. Vamos esclarecer isso!

Quando você cria um script na Unity, como ControlaJogador, você está criando uma nova classe. Em C#, uma classe é um tipo definido pelo usuário. Então, quando você declara uma variável do tipo ControlaJogador, você está dizendo ao compilador que essa variável pode armazenar uma instância da classe ControlaJogador.

Por exemplo, considere o seguinte código:

public class ControlaJogador : MonoBehaviour
{
    public int vida;
    // Outros métodos e propriedades
}

Aqui, ControlaJogador é uma nova classe que você criou. Agora, quando você declara uma variável desse tipo, como:

private ControlaJogador scriptControlaJogador;

Você está dizendo que scriptControlaJogador é uma variável que pode armazenar uma instância da classe ControlaJogador.

O compilador entende isso porque, quando você cria a classe ControlaJogador, ela é registrada como um tipo válido no seu projeto. Assim, você pode usar ControlaJogador como tipo de variável, da mesma forma que usaria tipos predefinidos como int, float, ou até mesmo tipos específicos da Unity como GameObject ou Slider.

Para ilustrar, vamos ver um exemplo prático:

  1. Criação da Classe:

    public class ControlaJogador : MonoBehaviour
    {
        public int vida = 100;
    }
    
  2. Uso da Classe como Tipo:

    public class ControlaInterface : MonoBehaviour
    {
        private ControlaJogador scriptControlaJogador;
    
        void Start()
        {
            scriptControlaJogador = GameObject.FindWithTag("Jogador").GetComponent<ControlaJogador>();
        }
    
        void Update()
        {
            Debug.Log(scriptControlaJogador.vida);
        }
    }
    

No exemplo acima, ControlaJogador é uma classe que você criou. No script ControlaInterface, você declara uma variável scriptControlaJogador do tipo ControlaJogador. No método Start, você encontra o GameObject com a tag "Jogador" e obtém o componente ControlaJogador desse GameObject, armazenando-o na variável scriptControlaJogador.

Espero ter ajudado e bons estudos!

Caramba faz muito sentido!

Consegui entender sim, valeu Henrique!!