Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Padrões de projeto

Boa tarde! Estou fazendo o curso e me paralelo efetuando um projeto para a faculdade. Está me ajudando muito o curso, porém eu precisava aplicar 1 ou mais padrões de projeto no meu trabalho, porém não estou conseguindo... a ideia seria fazer com que meu personagem principal (O "Player") fosse um singleton, pois eu o instancio apertando enter... mas, caso aperte mais vezes o Enter, cria vários outros personagens. Sei que poderia apenas criar uma variável bool e, caso já tenha criado, não cria mais... mas assim não estaria aplicando um padrão de projeto. Sei que isto não está no curso, mas queria saber se existe algum outro curso aqui na Alura, usando Unity, que ajude com esta parte

1 resposta
solução

Oi, Leandro, tudo bem?

Nós usamos a base do Singleton quando vamos fazer áudio em outras partes desse curso.

Vou deixar um exemplo de implementação básica e você pode evoluir a partir daí, quem sabe criar uma classe que recebe um parâmetro genérico, ou usando getter para facilitar, por exemplo.

public class JogadorSingleton : MonoBehaviour
{
    public static JogadorSingleton instance = null;

    void Awake 
    {
        if (instance == null)
            instance = this;
        else
            Destroy(gameObject);
    }
}

Outro exemplo:

public class JogadorSingleton : MonoBehaviour 
{
    private static JogadorSingleton instance = null;

    public static JogadorSingleton Instance

    {

        get
        {
            if(instance == null)

                  instance = FindObjectOfType<JogadorSingleton>();

            return instance;

        }

    }

    void Awake()

    {

        if(instance == null )

            instance = this;

        else
            Destroy(gameObject);

    }

}

Mas acho que melhor que criar um Singleton pro seu jogador seria você criar um GameManager (que pode ser um Singleton) para guardar os estados do seu jogo.