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

[Dúvida] Variável instancia

Eu entendi o propósito dela ser public e static, para poder ser acessada em todos os scripts e ter sempre o mesmo valor em todos os locais que for utilizada. Também entendi que meuAudioSource vai receber o componente AudioSource. Ok.

Mas estou tentando entender o motivo de criar essas duas variáveis. Ambas são do tipo AudioSource e instancia vai receber meuAudioSource. Por que não posso apenas criar só a variável instancia e atribuir o componente AudioSource a ela? Não seria a mesma coisa?

Ficaria assim:

public class ControlaAudio : MonoBehaviour {

    public static AudioSource instancia;

    void Awake()
    {
        instancia = GetComponent<AudioSource>();  
    }
}

Ou também poderia criar meuAudioSource como public e static, no lugar de instancia. É uma dúvida só pra saber que problema eu teria se fizesse o código assim, imagino que exista alguma peculiaridade que não estou enxergando.

2 respostas
solução!

Pode ser sim, é só uma boa prática de criação de singletons, porque depois se por algum motivo você apagar o audio source ou quiser trocar o seu valor o erro de atribuição é mais claro de ver já que temos nomes completamente diferentes e na Unity com a variável privada você tem acesso ao Debug mode no Inspector para fácil visualização, já com a variável static não.

Nas normalmente o padrão é:

if (instance == null)
{
    instance = valor aqui
}

Aah sim, entendi. Essa questão de ter acesso ao Debug faz a diferença mesmo.

Muito obrigada pelo esclarecimento! :]