SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Quero começa a desenvolver um jogo de luta porem eu queria aprender a faze
ajuda sobre skybox
Salvar objetos que foram destruidos entre cenas na unity
MEU SIMULADOR DE CARRO
Unity - SceneManager.LoadScene abre scene com objeto "vazio"
[_____IMPORTANTE_____] ALTERAÇÕES NA POLÍTICA DE COBRANÇA DA UNITY
[RESOLVIDO] Ausencia da funçao NavMesh na Unity 2022.2.12
Interação com elementos UI
[_____IMPORTANTE_____] ALTERAÇÕES NA POLÍTICA DE COBRANÇA DA UNITY - 2
Roll Up Um jogo de aventura e desáfios
Terminologia da Unity em outras engines
Como criar a iluminação do Sol no Sistema Solar?
Conexão de lobby pelo OnConnectedToMaster
Problema na exportção de projeto unity
[RESOLVIDO] Unity - Áudios estão emitindo som só Depois do Botão ser solto
Unity - Banco de Dados Online junto ao Jogo
Player virar para o inimigo(Prefab)
[TUTORIAL] Sistema De Save Game Ao Sair Da Fase
Problema de Sincronização de um objeto de um jogo multiplayer usa q Photon
Unity - Compartilhar meu Jogo
Alguém que manja do Google ADmob?
Unity - Avaliar meu Jogo
[RESOLVIDO] Destruir inimigo com o player.
Salvar e carregar dados na Unity de objetos prefabs sem sobrescrever os dad
Unity - Salvar os Dados do Jogador Online
Input.GetAxis() obedercer a orientação de um objeto.
ajuda com o sistema de drag and drop com controle no invetario
Como executar outros blocos fora do bloco static void Main()
Usando a biblioteca UnityEngine fora da Unity
Mixamo - Character Gratuito?
Touch mobile
Erro NullReferenceException Não consigo resolver
Criador de Sites Freelancer DISPONIVEL!!!
Unity - Não deixar o Jogador alterar o Jogo pelo regedit do pc?
Tiro com Botao UI (ME AJUDEM)
[Projeto em Andamento] Draug, um jogo de hordas
Vagas de programadores e modeladores para startup
Consigo herdar/ copiar parâmetros do animator da unity?
O que seriam os códigos-fonte?
[RESOLVIDO] Unity Vulkan - Out of memory! (allocating memory for image)
Unity Problema de Vírus
[TUTORIAL] Como fazer uma gota de água na Unity
Mirror ou Photon Pun 2 ??? para Mobile
Character Player Modular
Icones não aparecem na Interface da Unity
Verificar se player está posado em blogo
Logica para criar (Player, Inventario, Arma) - Mobile
Sistema de pegar passageiros
Trailer Final de O Labirinto II
Meu jogo não conecta no google play games
ALGUEM ME AJUDA PFV
Problema tentando inserir "Sprite"
Oferto Serviço Programação para Jogos
FAZER AÇÂO AO ENTRAR NO CAMPO DA CAMERA
[RESOLVIDO] QUEBRA DE LINHA NO PLACEHOLDER. Nao lembro como que faz
Unity - Qual o Limite Máximo de Linhas em um Script para q ele fique Leve?
movimento 2d
Alguém que ja publicou na steam pode me ajudar com isso?
Animação Unity toda bugada
UDaySurvival - Jogo de sobrevivência de mundo aberto para mobile!https://yo
Trailer do meu jogo O Labirinto II
Jogo Atisk (Trailer)
Adicionem meu jogo na lista de desejos
Discord!
Como executar a void de um outro scrypt
Shader não funciona no Unity URP
Jogo Mobile - Ultimate Flight Simulator - Real World SDK
Unity - FPS e CPU ???
Usar microfone na Unity
Jogo ficando escuro quando faço a Build pela cena menu
Dúvida sobre movimentação do personagem
[RESOLVIDO] ACESSAR SCRIPT DE OUTRO GAMEOBJECT
Para eu ter shader em meu projeto eu tenho que usar o hdrp ou o 3d padrao?
Rotate Camera Mobile
Sou modelador 3d (!!! Arquitetonico!!!) Disponivel !!!!!!
Preciso de alguém que saiba programação e Raycast
Servidor/cliente usando sockets
Assets carregados com addressables causando erro na versão "buildada"
Jogo multiplayer com salas - não vai para o lobby
Texto - Não escreve no 'play'. Clica mais não digita.
Câmera Não esta renderizando na segunda janela.
Movimento da Câmera No Android
[RESOLVIDO] - Unity não está mais funcionando o "Build and Run"
Precisa de modelador com ou sem experiência
Duvida com "mesclagem" de animação
Missoes Aparecerem aleatoriamente do nada
Dúvida pafra IOS
botoes não esta funcionando corretamente nem a fisica?
Duvida com NavMeshAgent
COMO AUMENTAR E DIMINUÍ A SENSIBILIDADE DO TOQUE POR CÓDICO (MOBILE)
A Licença da Unity só funciona se eu tiver Internet
Problema com OnTriggerEnter
Transparência ao colidir
bool para evitar de salvar frames repetido
Unity - Transições no AnimatorController rodando errado
problemas com "wall Jump" , atribuir força ao eixo X
Meu Jogo ja Esta Pronto! EXPERIMENTEM!!
JOSTICK NAO SE MOVE
botoes para mobile
Hoje à(s) 15:33
Hoje à(s) 12:45
Hoje à(s) 9:24
Ontem à(s) 21:02
Ontem à(s) 13:37
Ontem à(s) 9:47
Sáb 23 Set 2023 - 14:10
Sáb 23 Set 2023 - 12:32
Sex 22 Set 2023 - 21:01
Qui 21 Set 2023 - 11:04
Qua 20 Set 2023 - 16:40
Qua 20 Set 2023 - 9:15
Dom 17 Set 2023 - 12:17
Sex 15 Set 2023 - 19:24
Sex 15 Set 2023 - 17:41
Sex 15 Set 2023 - 16:28
Sex 15 Set 2023 - 10:56
Sex 15 Set 2023 - 10:15
Seg 11 Set 2023 - 11:43
Seg 11 Set 2023 - 11:31
Sáb 9 Set 2023 - 16:53
Sáb 9 Set 2023 - 13:44
Ter 5 Set 2023 - 23:12
Ter 5 Set 2023 - 15:12
Seg 4 Set 2023 - 23:53
Seg 4 Set 2023 - 19:39
Dom 3 Set 2023 - 21:47
Sáb 2 Set 2023 - 11:53
Sex 1 Set 2023 - 14:21
Qui 31 Ago 2023 - 20:19
Qui 31 Ago 2023 - 18:15
Qua 30 Ago 2023 - 11:21
Ter 29 Ago 2023 - 20:43
Seg 28 Ago 2023 - 19:18
Sáb 26 Ago 2023 - 16:49
Sáb 26 Ago 2023 - 16:38
Qui 17 Ago 2023 - 1:56
Qua 16 Ago 2023 - 22:21
Seg 14 Ago 2023 - 12:28
Dom 6 Ago 2023 - 17:24
Dom 6 Ago 2023 - 10:58
Qui 3 Ago 2023 - 9:38
Qua 2 Ago 2023 - 8:20
Ter 1 Ago 2023 - 18:07
Dom 30 Jul 2023 - 17:43
Sáb 29 Jul 2023 - 19:24
Qui 27 Jul 2023 - 9:27
Seg 24 Jul 2023 - 11:12
Seg 24 Jul 2023 - 0:44
Seg 24 Jul 2023 - 0:37
Seg 24 Jul 2023 - 0:17
Seg 24 Jul 2023 - 0:10
Qua 19 Jul 2023 - 11:37
Ter 18 Jul 2023 - 19:12
Qua 12 Jul 2023 - 9:49
Ter 11 Jul 2023 - 8:58
Ter 11 Jul 2023 - 1:03
Seg 10 Jul 2023 - 21:10
Sex 7 Jul 2023 - 16:14
Ter 4 Jul 2023 - 0:11
Sex 30 Jun 2023 - 20:10
Qui 29 Jun 2023 - 17:19
Qui 29 Jun 2023 - 15:40
Ter 27 Jun 2023 - 1:45
Seg 19 Jun 2023 - 11:03
Dom 18 Jun 2023 - 18:11
Dom 4 Jun 2023 - 14:41
Ter 30 maio 2023 - 19:28
Ter 30 maio 2023 - 6:04
Seg 29 maio 2023 - 19:53
Sáb 27 maio 2023 - 15:11
Sex 26 maio 2023 - 16:59
Sex 26 maio 2023 - 11:27
Qui 25 maio 2023 - 10:33
Sáb 20 maio 2023 - 12:25
Ter 16 maio 2023 - 17:43
Ter 16 maio 2023 - 17:42
Ter 9 maio 2023 - 19:42
Seg 8 maio 2023 - 7:13
Seg 8 maio 2023 - 6:38
Sáb 6 maio 2023 - 23:44
Sáb 6 maio 2023 - 18:42
Sáb 6 maio 2023 - 1:35
Qua 3 maio 2023 - 12:32
Seg 1 maio 2023 - 20:51
Dom 30 Abr 2023 - 20:49
Dom 30 Abr 2023 - 17:06
Sáb 29 Abr 2023 - 16:05
Qui 27 Abr 2023 - 16:39
Qui 27 Abr 2023 - 0:40
Ter 25 Abr 2023 - 17:33
Ter 25 Abr 2023 - 10:23
Dom 23 Abr 2023 - 0:11
Sáb 22 Abr 2023 - 4:27
Sex 21 Abr 2023 - 23:38
Sex 21 Abr 2023 - 22:21
Qui 20 Abr 2023 - 16:57
Qui 20 Abr 2023 - 12:28
Qua 19 Abr 2023 - 15:03



































































































[TUTORIAL] Singleton, A melhor forma de acessar a classe!

4 participantes

Ir para baixo

TUTORIAL [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por augustobrito Qua 5 Out 2016 - 14:50

Bom pessoal, Andei muito assistindo vídeos de gringos e estudando sobre c#, desde então comecei a usar Singletons para facilitar a vida.
Bom, o Singleton vai ser util para classes controladoras, como por exemplo um GameController, um AudioController, e por aí vai. Caso queira saber mais sobre singletons leia aqui: https://msdn.microsoft.com/en-us/library/ff650316.aspx

Vamos ao tutorial explicando passo a passo do que deve ser feito. (É DE EXTREMA IMPORTÂNCIA QUE VOCE LEIA OS COMENTÁRIOS DENTRO DO CÓDIGO PARA ENTENDER O QUE ESTÁ ACONTECENDO!)




PASSO 1 - Criando a Instancia.



Código:
using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour {

    // Vamos criar uma váriavel do TIPO "GameController" e usar o modificador "static".
    // Para saber mais sobre o modificador "static": https://msdn.microsoft.com/pt-br/library/98f28cdx.aspx
    private static GameControllerinstance;

    // Vamos chamar o método "Awake", que é chamado antes do método "Start"
    private void Awake()
    {
        // Iremos checar se a instancia é nula
        if (instance == null)
        {
            // Se for, então, a instancia será a instancia desta classe.
            // Para saber mais sobre "this": https://msdn.microsoft.com/pt-br/library/dk1507sz.aspx
            instance = this;
            // Vamos dizer para que não destrua esse OBJETO caso carreguemos outra cena
            DontDestroyOnLoad(this);
        }
        else
        {
            // Agora, iremos checar se a INSTANCIA que criamos lá em cima não é igual a INSTANCIA desta CLASSE
            // Pois, se tivermos 2 INSTANCIAS IGUAIS, iremos deletar esta instancia.
            if (instance != this)
            {
                Debug.Log("INSTANCE ALREADY IN SCENE! LET'S DESTROY OURSELVES!");
                Destroy(this.gameObject);
            }
        }
    }
        
}


PASSO 2 - (Opcional, porém recomendado) - Criando uma forma de "Carregar" o Prefab para dentro da cena caso seja chamado.


Bom, este passo aqui serve para que voce evite de esquecer de colocar o PREFAB dentro da cena. Ele vai  carregar o prefab caso você chame a instancia do GameControlle através de outro Classe, assim evitando erros.
Primeiramente, voce deve criar um GameObject em branco, colocar o script nele com o MESMO nome do script, depois, voce vai criar uma pasta chama Resources dentro da pasta Assets, e salvar o PREFAB que você criou do GameController lá dentro.



PASSO 2.1 - Melhorando o Script




Código:
using UnityEngine;
using System.Collections;

public class UIController : MonoBehaviour {

    // Vamos criar uma váriavel do TIPO "UIController" e usar o modificador "static".
    // Para saber mais sobre o modificador "static": https://msdn.microsoft.com/pt-br/library/98f28cdx.aspx
    private static UIController instance;

    // Vamos criar um método Getter para ter acesso atraves de outras classes
    // Para saber mais sobre Getters e Setters: https://msdn.microsoft.com/pt-br/library/w86s7x04.aspx
    public static UIController Instance
    {
        get
        {
            // Vamos checar se a instancia esta nula, ou seja, sem nenhum valor atribuido a ela
            if (instance == null)
            {
                // Vamos tentar procurar  o objeto na cena, caso ache, a instancia vai receber o objeto, porem do tipo UIController
                instance = GameObject.FindObjectOfType<UIController>();

                // Caso eu não ache o GameObject na cena, entao vou ter que carregar este GameObject dos Assets...
                if (instance == null)
                {
                    // Vamos Criar um GameObject temporario para armazenar o Object instanciado
                    // Lembrando que, vou precisar fazer o cast do Object para GameObject
                    GameObject obj = (GameObject)Instantiate(Resources.Load("UIController"));
                    obj.name = "UIController";
                    // Agora, precisamos colocar dentro da instance a componente UIController.
                    // Pois não precisamos na realidade do GameObject, mas sim da componente UIController
                    instance = obj.GetComponent<UIController>();
                }
                // Agora vamos fazer com que o GameObject permaneça caso carregue outras cenas.
                DontDestroyOnLoad(instance.gameObject);
            }
            return instance;
        }
    }

    // Vamos chamar o método "Awake", que é chamado antes do método "Start"
    private void Awake()
    {
        // Iremos checar se a instancia é nula
        if (instance == null)
        {
            // Se for, então, a instancia será a instancia desta classe.
            // Para saber mais sobre "this": https://msdn.microsoft.com/pt-br/library/dk1507sz.aspx
            instance = this;
            // Vamos dizer para que não destrua esse OBJETO caso carreguemos outra cena
            DontDestroyOnLoad(this);
        }
        else
        {
            // Agora, iremos checar se a INSTANCIA que criamos lá em cima não é igual a INSTANCIA desta CLASSE
            // Pois, se tivermos 2 INSTANCIAS IGUAIS, iremos deletar esta instancia.
            if (instance != this)
            {
                Debug.Log("INSTANCE ALREADY IN SCENE! LET'S DESTROY OURSELVES!");
                Destroy(this.gameObject);
            }
        }
    }

    // Método para Exemplificar o uso da Instancia
    public void ResetGame()
    {
    }
        
}

PASSO 3 - Acessando o GameController em outra Classe.




Código:
// Este passo é o mais simples, toda vez que desejar chamar um método, ou uma variavel de dentro do GameController
// Use a seguinte linha: (Lembrando, desde que quem voce for acessar seja publico)

GameController.Instance.ResetGame();
augustobrito
augustobrito
Mestre
Mestre

Masculino PONTOS : 3577
REPUTAÇÃO : 161
Áreas de atuação : C#, C, C++, Python & JS.
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! WvDYdlf

http://augustobrit.github.io

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por Weslley Qua 5 Out 2016 - 16:54

bom tutorial
Weslley
Weslley
Moderador

Masculino PONTOS : 5290
REPUTAÇÃO : 739
Idade : 25
Áreas de atuação : https://weslleyxavier.com
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! Aad8pUi

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por augustobrito Ter 29 Nov 2016 - 9:46

valeu =)
augustobrito
augustobrito
Mestre
Mestre

Masculino PONTOS : 3577
REPUTAÇÃO : 161
Áreas de atuação : C#, C, C++, Python & JS.
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! WvDYdlf

http://augustobrit.github.io

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por Flávio Dom 10 Mar 2019 - 20:18

Dúvidas:

para fins de aprendizagem, copiei esses scripts em um projeto e estou tendo erro no script do passo 1, o erro está aparecendo em 'GameControllerinstance' e nas palavras 'instance.'

como corrijo isso?

outra coisa, a função public void ResetGame()   esta vazia, mas dentro dela pode ser colocado qualquer coisa para depois ser chamada por GameController.Instance.ResetGame(); ?
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 2408
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! WvDYdlf

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por Flávio Dom 10 Mar 2019 - 20:20

ok fiz a correção, é porque GameController e instance estão juntos.
Flávio
Flávio
MembroAvançado

Masculino PONTOS : 2408
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! WvDYdlf

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por augustobrito Ter 9 Abr 2019 - 17:13

Up pois vale a atenção novamente =)
augustobrito
augustobrito
Mestre
Mestre

Masculino PONTOS : 3577
REPUTAÇÃO : 161
Áreas de atuação : C#, C, C++, Python & JS.
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! WvDYdlf

http://augustobrit.github.io

Ir para o topo Ir para baixo

TUTORIAL Re: [TUTORIAL] Singleton, A melhor forma de acessar a classe!

Mensagem por Magnatah Ter 9 Abr 2019 - 19:31

Eu Faço Desse Jeito:

Porem Não é recomendado Caso Utilize MultiThreading.
Código:
public class ClasseSingleton : MonoBehaviour
{
    private static ClasseSingleton UnicaInstancia;
    private byte ValorTeste = 0;

    //Construtor privado
    private ClasseSingleton() { }

    private void Awake()
    {
        if (UnicaInstancia == null)
            UnicaInstancia = this;
        else if (UnicaInstancia != this)
            Destroy(gameObject.GetComponent(UnicaInstancia.GetType()));
    }

    public static ClasseSingleton Instancia()
    {
        return UnicaInstancia;
    }
}


Exemplo de Uso:
Código:
public class ClasseTeste : MonoBehaviour
{
    ClasseSingleton.Instancia().ValorTeste = 1;
}
Magnatah
Magnatah
Instrutor

Masculino PONTOS : 3093
REPUTAÇÃO : 204
Idade : 28
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras : [TUTORIAL] Singleton, A melhor forma de acessar a classe! Aad8pUi

https://www.instagram.com/ampercygames/

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos