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:
Como faço balanço na arma
Unity 2D - Sprite Embaçado
como fazer um galaxy shooter 2d na unity
Erro no Script de pulo dublo
AJUDA POR FAVOR (ERRO DE CACHE)
Como Entrar no Carro (RCC)
Problemas com Object.Instantiate
Problema com o Unreal Engine
ERRO Em Scipts
Que programa e recomendado pra criar jogo 2D?
Firebase na Unity
Como modificar variáveis de outras classes?
Otimização da Unity
Como ATUALIZAR o jogo sem precisar ficar compilando toda hora? -
Canal para vídeos de Unreal Engine e Desenvolvimento
ERRO Em Scipts
Como Ativar e Desativar Emissao do Material Por C#
Nobody's Land: Aftermaths - First Official Trailer
Geração de Mundo
publiquei meu primeiro jogo na gamejolt e na play store
C# .net Core -> Adicionar dados de outra tabela
[TUTORIAL] Script de arma automatica
[TUTORIAL] Acessar variáveis de outros scripts, variáveis estáticas (javaScript)
[RESOLVIDO]Ativar o Character controle faz o boneco ignorar gravidade
SOM Duplicado unity3d
Problemas com a posição usando Setparent
Dar dano no inimigo ao clicar nele
A procura de um MODELADOR pra desenvolver jogo pra estudo.
Tempo
Cutscene
pq o game launcher da samsung n reconhece o meu jogo?
Jogo Project Lazarus parte 2
[TUTORIAL] mover personagem na direção da camera
como fazer um gameobject selecionar no código ao colidir com o mesmo
Como Fazer esse Giroflex (Link Video)
Quando uma Boolean ativar as outras duas nao podem ficar on.....
[ASSET] Personagem v0.5
Como Fazer Carreta Unity Ultilizando o RCC
Problema com um jogo de tiro em 1D
Jogador não Subi na Plataforma
ola estou tentando colocar meu scrip so que ele da erro n sei pq ajuda
Como colocar uma mira no lugar do cursor do mouse
Unity 2018 - Ajuda com OnTriggerEnter e OnTriggerExit
meu script de Basic Runtime Occlusion Culling nao esta funcionando
[TUTORIAL] vibrar o dispositivo ao colidir com um objeto
como fazer para video rodar após cena inicial?
Como faço pro personagem correr na direção da câmera para Android
Pontuação e Click
Como tocar efeito sonoro apenas depois no momento que carrega a cena?
Pontuação em barra
Como deixar a barra de vida fixa??
Elevador
Botões UI
Unable to merge Android manifests
Android SDK Build-tools component is not found (Por Favor Me Ajudem)
Sistema de Ranking com Leaderboard facebook na Unity
Spawnar Objetos aleatorios em lugares pre-definidos
Movimentação em primeira pessoa
Salvar a cada vez que pego um moeda binary formatter
Como fazer a câmera balançar de acordo com a suspensão do veículo?
Sistema de Escolha de Player no Multiplayer
Estou com problema com um script que está dando erro.
IA do jogo Pong
Bons exemplos brasileiros de inimigos em jogos de terror
mover objeto ao encostar em um trigger
[RESOLVIDO] Unity 2019.4.9f1 - Erro ao criar o APK
Plataforma Flutuante
Como passar o canvas com components de uma cena pra outra?
Problema com TERRAIN
[PROBLEMA] Unity 2018 - Nenhum script Monobehaviour no arquivo
wallrun em 1° pessoa e com rigidbody
Dúvida relacionada a comportamento de objetos
Aumentar e diminuir velocidade de uma animação
Caracteres estão sumindo em Text UI somente na Build WebGL
como fazer um chat simples no photon
Erro na exportação
Alguém tem script de movimentação 3D?
Não consigo desativar script de gameObject (C#)
Unity 2018.2 -Ajuda com sistema de SpawnPoint e respawn com Photon Bolt
Recarregar cena usando botão UI
Controler de player 2D
Combate corpo a corpo 2D
Tela de shop/market na unity
Dúvida sobre textura
Problemas para rotacionar objeto filho
Como Resolver ?? Android SDK Build-tools component is not found.....
Update APK - Arquivo de expansão [New Google Console]
Alguém mais tem tido problemas com Layermask [v2019.4.17]
error ao buildar para windows utilizando il2cpp [il2cpp.exe did not run !]
TUTORIAL POST-PROCESSING NA UNITY 2020.2.2 -do CANAL Netzado
Erro na atualização da unity
Minha camera esta girando de maneira brusca
[DICA] Deixar o Loop 'For' Mais Otimizado
[PEDIDO]Gostaria de reviews sinceras no meu jogo
problema de Textura do Sketchup
[TUTORIAL] Sistema de diálogo/mensagens na Unity
Como Fazer Camera do Euro Truck 2 (para Android)
[RESOLVIDO] NavMeshAgent parar
[PEDIDO] Unity2018 - 3DSURVIVAL - Beta Review
Hoje à(s) 12:22 am
Ontem à(s) 6:56 pm
Ontem à(s) 6:36 pm
Ontem à(s) 5:10 pm
Ontem à(s) 3:37 pm
Ontem à(s) 1:50 pm
Sab Fev 27, 2021 11:08 pm
Sab Fev 27, 2021 9:18 pm
Sab Fev 27, 2021 6:07 pm
Sab Fev 27, 2021 2:47 pm
Sab Fev 27, 2021 12:27 pm
Sab Fev 27, 2021 12:08 pm
Sab Fev 27, 2021 3:17 am
Sab Fev 27, 2021 3:13 am
Sab Fev 27, 2021 3:05 am
Sex Fev 26, 2021 10:42 pm
Sex Fev 26, 2021 9:30 pm
Sex Fev 26, 2021 8:59 pm
Sex Fev 26, 2021 7:56 pm
Sex Fev 26, 2021 7:51 pm
Sex Fev 26, 2021 6:19 pm
Sex Fev 26, 2021 11:27 am
Sex Fev 26, 2021 6:01 am
Sex Fev 26, 2021 1:04 am
Qui Fev 25, 2021 11:28 pm
Qui Fev 25, 2021 7:59 pm
Qui Fev 25, 2021 3:31 pm
Qui Fev 25, 2021 1:54 pm
Qui Fev 25, 2021 10:30 am
Qui Fev 25, 2021 10:24 am
Qua Fev 24, 2021 6:32 pm
Qua Fev 24, 2021 7:45 am
Ter Fev 23, 2021 12:32 pm
Seg Fev 22, 2021 8:30 pm
Dom Fev 21, 2021 1:01 pm
Dom Fev 21, 2021 12:00 pm
Sab Fev 20, 2021 9:54 pm
Sab Fev 20, 2021 1:57 pm
Sab Fev 20, 2021 12:19 pm
Sab Fev 20, 2021 12:11 pm
Sab Fev 20, 2021 12:05 pm
Sex Fev 19, 2021 8:49 pm
Sex Fev 19, 2021 5:03 pm
Sex Fev 19, 2021 4:56 pm
Sex Fev 19, 2021 1:02 pm
Sex Fev 19, 2021 11:34 am
Sex Fev 19, 2021 10:04 am
Qui Fev 18, 2021 9:21 pm
Qui Fev 18, 2021 7:45 pm
Qui Fev 18, 2021 10:37 am
Qua Fev 17, 2021 7:25 pm
Qua Fev 17, 2021 3:55 pm
Qua Fev 17, 2021 12:56 pm
Qua Fev 17, 2021 12:10 pm
Qua Fev 17, 2021 10:02 am
Ter Fev 16, 2021 1:13 pm
Ter Fev 16, 2021 12:55 pm
Ter Fev 16, 2021 11:29 am
Ter Fev 16, 2021 1:43 am
Ter Fev 16, 2021 12:11 am
Seg Fev 15, 2021 6:56 pm
Seg Fev 15, 2021 3:26 pm
Seg Fev 15, 2021 2:13 pm
Seg Fev 15, 2021 12:45 pm
Seg Fev 15, 2021 10:31 am
Seg Fev 15, 2021 12:44 am
Dom Fev 14, 2021 1:13 pm
Dom Fev 14, 2021 9:26 am
Sab Fev 13, 2021 4:31 pm
Sab Fev 13, 2021 1:39 pm
Sab Fev 13, 2021 10:07 am
Sab Fev 13, 2021 9:25 am
Sab Fev 13, 2021 12:02 am
Sex Fev 12, 2021 8:06 pm
Qui Fev 11, 2021 1:34 am
Qua Fev 10, 2021 9:12 pm
Ter Fev 09, 2021 9:36 pm
Ter Fev 09, 2021 12:01 am
Seg Fev 08, 2021 7:26 pm
Seg Fev 08, 2021 2:55 pm
Seg Fev 08, 2021 12:25 pm
Seg Fev 08, 2021 11:43 am
Sex Fev 05, 2021 11:26 pm
Sex Fev 05, 2021 5:01 pm
Sex Fev 05, 2021 2:37 pm
Sex Fev 05, 2021 1:11 pm
Sex Fev 05, 2021 12:45 pm
Sex Fev 05, 2021 11:23 am
Sex Fev 05, 2021 10:45 am
Qua Fev 03, 2021 10:02 pm
Qua Fev 03, 2021 4:45 pm
Qua Fev 03, 2021 3:24 pm
Qua Fev 03, 2021 1:54 pm
Qua Fev 03, 2021 1:50 pm
Qua Fev 03, 2021 12:05 pm
Qua Fev 03, 2021 3:23 am
Ter Fev 02, 2021 11:11 pm
Ter Fev 02, 2021 3:07 pm
Seg Fev 01, 2021 9:13 pm
JulioWinchester
slowt
LUCASkkk
DNX BRAZIL 1
verme1311
EricknhYT
Pokedlg
DNX BRAZIL 1
SauloeArthur
Alex Jun
tanottauro
darkrj
Alex Jun
Alex Jun
Alex Jun
Fagner
EricknhYT
JohnRambo
dutrabr100
dutrabr100
KurotamaXIII
TODDY979
Danilo
Minijump
Fagner
darknecron
darkrj
Cristhofer Marques
Maria Elisa
JulioWinchester
Fagner
Patrick
SauloeArthur
rodrigovitao
JulioWinchester
EricknhYT
FelipeSouza11
EricknhYT
tautologias345
NKKF
NKKF
NKKF
ProBrStalker
LlucasBRDev
NKKF
ComicSans
SauloeArthur
Fagner
rafaelPortugal
SauloeArthur
Konoiaro
MiguelAon
Charlesoff
Callyde Jr
EricknhYT
Franttyck
FelipeSouza11
SauloeArthur
joaoguil3
Fagner
TIKO
NKKF
darkrj
JohnRambo
SauloeArthur
Arcebispo
dutrabr100
speedluk
Triskal
ProBrStalker
MiguelAon
Magnatah
rodrigold
daniel.karling
gui78h3
Edivandro2706
NKKF
wooZbr
Pokedlg
SauloeArthur
Pokedlg
KonigOficial
Pokedlg
ffabim
pdsimulador
EricknhYT
chicotx56
NickDev
Valakinhas
kaykyscaranni1
JulioWinchester
capim22
NKKF
diegopds
Mid
MayLeone
EricknhYT
DVargas
ProBrStalker

Dúvida sobre Instanciate

Ir em baixo

DÚVIDA Dúvida sobre Instanciate

Mensagem por ADSK Sex Jan 22, 2021 3:50 am

Estou criando um método de clique, onde ao clicar no objeto ele deveria criar uma nova cópia do objeto original(Prefab) porém ele cria uma cópia de si mesmo.
Pseudocódigo: 
Código:
Class onclickNewObject(): MonoBehaviour{
    public GameObject esfera; // referencia o prefab que tem esse código atrelado(componente)

    void onMouseDown(){
        Instanciate(esfera);
    }

}

Porém ao fazer isso ele substitui o prefab referenciado(esfera) por uma cópia de si mesmo(esfera(clone)).

Não estou entendendo o porquê dele substituir o prefab pelo clone durante a execução.

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por NKKF Sex Jan 22, 2021 9:57 am

Não entendi, quando você executa essa função, a variável esfera muda? Ou o objeto que é instanciado muda?
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 3356
REPUTAÇÃO : 537
Idade : 16
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sex Jan 22, 2021 10:43 am

@ADSK escreveu:Estou criando um método de clique, onde ao clicar no objeto ele deveria criar uma nova cópia do objeto original(Prefab) porém ele cria uma cópia de si mesmo.
Pseudocódigo: 
Código:
Class onclickNewObject(): MonoBehaviour{
     public GameObject esfera; // referencia o prefab que tem esse código atrelado(componente)

     void onMouseDown(){
        Instanciate(esfera);
     }

}

Porém ao fazer isso ele substitui o prefab referenciado(esfera) por uma cópia de si mesmo(esfera(clone)).

Não estou entendendo o porquê dele substituir o prefab pelo clone durante a execução.

Que estranho Intrigado. Isso não era para acontecer, só se voce colocasse:
Código:
esfera = Instantiate(esfera);


Bom neste caso, tenta fazer assim:

Código:
Class onclickNewObject(): MonoBehaviour{
    public GameObject esfera; // referencia o prefab que tem esse código atrelado(componente)
    private GameObject reserva;

    void onMouseDown(){
        reserva = esfera;
        Instantiate(esfera);
        if(esfera != null)
        {
            esfera = reserva;
        }
    }

}
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sex Jan 22, 2021 12:10 pm

@NKKF escreveu:Não entendi, quando você executa essa função, a variável esfera muda? Ou o objeto que é instanciado muda?
A variável esfera muda

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sex Jan 22, 2021 12:17 pm

Código:
[size=14]    public GameObject Hidrogenio;
    public GameObject Carbono;
    
    void OnMouseDown()
    {
        
        criarCarbono();
        
    }

    void criarCarbono()
    {
        
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(Hidrogenio,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
        
    }[/size]

Se ajudar esse é o código original, onde basicamente ele serve para criar um  novo átomo de carbono ligando-o a molécula e estabilizando-o, esse código é um componente que pertence ao prefab hidrogenio, e o gameObject Hidrogenio( primeiro atributo) também referencia esse prefab

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sex Jan 22, 2021 2:17 pm

Voce quer que a variavel nao mude não é?
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sab Jan 23, 2021 12:57 am

@Pokedlg escreveu:Voce quer que a variavel nao mude não é?
isso

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 1:02 am

No caso é o carbono que está mudando?
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 1:11 am

Código:
    public GameObject Hidrogenio;
    public GameObject Carbono;
    private GameObject CarbonoReserva;
   
    void OnMouseDown()
    {
       
        criarCarbono();
       
    }

    void criarCarbono()
    {
        CarbonoReserva = Carbono;
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(Hidrogenio,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
        if(Carbono != null)
        {
            Carbono = CarbonoReserva;
        }

    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
       
    }

Ve se isso funciona, se nao funcionar me avise
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sab Jan 23, 2021 11:31 am

@Pokedlg escreveu:
Código:
    public GameObject Hidrogenio;
    public GameObject Carbono;
    private GameObject CarbonoReserva;
    
    void OnMouseDown()
    {
        
        criarCarbono();
        
    }

    void criarCarbono()
    {
        CarbonoReserva = Carbono;
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(Hidrogenio,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
        if(Carbono != null)
        {
            Carbono = CarbonoReserva;
        }

    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
        
    }

Ve se isso funciona, se nao funcionar me avise
Mesmo utilizando uma variável reserva (Para o Hidrogênio) ele altera a referencia para sua instancia atual, tirando a referência para o prefab originar;
1ª Execução:
Dúvida sobre Instanciate CFwQAAAAASUVORK5CYII=
2ª Execução
Dúvida sobre Instanciate AWWbqK8AN6oMAAAAAElFTkSuQmCC

Código que eu utilizei:
Código:
[size=14] public GameObject Hidrogenio;
    private GameObject HidrogenioReserva;
    public GameObject Carbono;
    
    void OnMouseDown()
    {
        
        criarCarbono();
        
    }

    void criarCarbono()
    {
        HidrogenioReserva = Hidrogenio;
        
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(HidrogenioReserva,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
        
    }[/size]

Utilizei também uma versão onde a variável "HidrogenioReserva" recebia a referência do hidrogenio no método "void Start()" porém o resultado foi o mesmo.

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 11:35 am

Voce esqueceu o if de null, coloque assim:

Código:
    public GameObject Hidrogenio;
    private GameObject HidrogenioReserva;
    public GameObject Carbono;
   
    void OnMouseDown()
    {
       
        criarCarbono();
       
    }

    void criarCarbono()
    {
        HidrogenioReserva = Hidrogenio;
        if(Hidrogenio != null)
        {
          Hidrogenio = HidrogenioReserva;
        }
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(HidrogenioReserva,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
       
    }
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sab Jan 23, 2021 11:46 am

@Pokedlg escreveu:Voce esqueceu o if de null, coloque assim:

Código:
    public GameObject Hidrogenio;
    private GameObject HidrogenioReserva;
    public GameObject Carbono;
    
    void OnMouseDown()
    {
        
        criarCarbono();
        
    }

    void criarCarbono()
    {
        HidrogenioReserva = Hidrogenio;
        if(Hidrogenio != null)
        {
           Hidrogenio = HidrogenioReserva;
        }
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for(int i = 0; i < 3; i++){
            hidro = Instantiate(HidrogenioReserva,carb.transform);
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
    }

    void atualizarAnterior(Atomo carbono){
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
        
    }
Mesmo assim ele altera a referência do hidrogênio

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 11:47 am

Descobri


Última edição por Pokedlg em Sab Jan 23, 2021 11:50 am, editado 1 vez(es)
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 11:50 am

Ata, descobri, é que voce está instanciando o objeto errado, tente assim:

Código:
public GameObject Hidrogenio;
private GameObject HidrogenioReserva;
public GameObject Carbono;

void OnMouseDown()
{
   
    criarCarbono();
   
}

void criarCarbono()
{
    HidrogenioReserva = Hidrogenio;
    if(Hidrogenio != null)
    {
      Hidrogenio = HidrogenioReserva;
    }
    GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
    List<Atomo> hidros = new List<Atomo>();
    GameObject hidro;
    for(int i = 0; i < 3; i++){
        hidro = Instantiate(Hidrogenio,carb.transform);
        hidros.Add(hidro.GetComponent<Atomo>());
    }
    carb.GetComponent<Atomo>().setAllAtomos(hidros);
    for (int i = 0; i < 3; i++)
    {
        carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
    }
    atualizarAnterior(carb.GetComponent<Atomo>());
}

void atualizarAnterior(Atomo carbono){
    this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
   
}
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 12:01 pm

Funcionou?
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sab Jan 23, 2021 12:06 pm

@Pokedlg escreveu:Ata, descobri, é que voce está instanciando o objeto errado, tente assim:

Código:
public GameObject Hidrogenio;
private GameObject HidrogenioReserva;
public GameObject Carbono;

void OnMouseDown()
{
    
    criarCarbono();
    
}

void criarCarbono()
{
    HidrogenioReserva = Hidrogenio;
    if(Hidrogenio != null)
    {
       Hidrogenio = HidrogenioReserva;
    }
    GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
    List<Atomo> hidros = new List<Atomo>();
    GameObject hidro;
    for(int i = 0; i < 3; i++){
        hidro = Instantiate(Hidrogenio,carb.transform);
        hidros.Add(hidro.GetComponent<Atomo>());
    }
    carb.GetComponent<Atomo>().setAllAtomos(hidros);
    for (int i = 0; i < 3; i++)
    {
        carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
    }
    atualizarAnterior(carb.GetComponent<Atomo>());
}

void atualizarAnterior(Atomo carbono){
    this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
    
}
Mesmo assim não funcionou. Vou tentar uma abordagem diferente onde crio um emptyObject com um script q instancie esse prefab e retorne o objeto instanciado pra ver se assim ele funciona

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 12:09 pm

Código:
public GameObject Hidrogenio;
private GameObject HidrogenioReserva;
public GameObject Carbono;

void OnMouseDown()
{
   
    criarCarbono();
   
}

void criarCarbono()
{
    HidrogenioReserva = Hidrogenio;
    GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
    List<Atomo> hidros = new List<Atomo>();
    GameObject hidro;
    for(int i = 0; i < 3; i++){
        hidro = Instantiate(Hidrogenio,carb.transform);
        hidros.Add(hidro.GetComponent<Atomo>());
        if(Hidrogenio != null)
    {
      Hidrogenio = HidrogenioReserva;
    }
    }
    carb.GetComponent<Atomo>().setAllAtomos(hidros);
    for (int i = 0; i < 3; i++)
    {
        carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
    }
    atualizarAnterior(carb.GetComponent<Atomo>());
}

void atualizarAnterior(Atomo carbono){
    this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
   
}

Tenta colocar dentro do for. Com o carbono funcionou?
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por ADSK Sab Jan 23, 2021 12:20 pm

@Pokedlg escreveu:
Código:
public GameObject Hidrogenio;
private GameObject HidrogenioReserva;
public GameObject Carbono;

void OnMouseDown()
{
    
    criarCarbono();
    
}

void criarCarbono()
{
    HidrogenioReserva = Hidrogenio;
    GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
    List<Atomo> hidros = new List<Atomo>();
    GameObject hidro;
    for(int i = 0; i < 3; i++){
        hidro = Instantiate(Hidrogenio,carb.transform);
        hidros.Add(hidro.GetComponent<Atomo>());
        if(Hidrogenio != null)
    {
       Hidrogenio = HidrogenioReserva;
    }
    }
    carb.GetComponent<Atomo>().setAllAtomos(hidros);
    for (int i = 0; i < 3; i++)
    {
        carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
    }
    atualizarAnterior(carb.GetComponent<Atomo>());
}

void atualizarAnterior(Atomo carbono){
    this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(),carbono);
    
}

Tenta colocar dentro do for. Com o carbono funcionou?
O problema em si, é que não é uma instancia nula, ela existe, porém é a instancia do objeto atual. Consegui resolver o problema com o método que eu havia falando antes criando um emptyObject que instancia o Hidrogênio(prefab) e retorna sempre a nova instancia(clone) do objeto original.
Código do emptyObject:

Código:
[size=14]public class HidrogenioCreator : MonoBehaviour
{
    public GameObject Hidrogenio;
    private GameObject HidrogenioDavez;
   public GameObject InstanciarHidrogenio(){
       HidrogenioDavez = Instantiate(Hidrogenio);
       return HidrogenioDavez;
   }
}[/size]

 novo código de inicialização:
Código:
[size=14]public GameObject HidrogenioCreator;

    public GameObject Carbono;

    void OnMouseDown()
    {

        criarCarbono();

    }

    void criarCarbono()
    {
        
        GameObject carb = Instantiate(Carbono, transform.position, Quaternion.identity);
        List<Atomo> hidros = new List<Atomo>();
        GameObject hidro;
        for (int i = 0; i < 3; i++)
        {
            hidro = HidrogenioCreator.GetComponent<HidrogenioCreator>().InstanciarHidrogenio();
            hidros.Add(hidro.GetComponent<Atomo>());
        }
        carb.GetComponent<Atomo>().setAllAtomos(hidros);
        for (int i = 0; i < 3; i++)
        {
            carb.GetComponent<Atomo>().getAtomoById(i).addAtomo(carb.GetComponent<Atomo>());
        }
        atualizarAnterior(carb.GetComponent<Atomo>());
    }

    void atualizarAnterior(Atomo carbono)
    {
        this.gameObject.GetComponent<Atomo>().getAtomoById(0).GetComponent<Atomo>().substituirAtomo(this.GetComponent<Atomo>(), carbono);

    }[/size]
Falta corrigir somente a parte do "setParent" agora mas o problema da instância está resolvido

ADSK
Iniciante
Iniciante

PONTOS : 74
REPUTAÇÃO : 2
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

DÚVIDA Re: Dúvida sobre Instanciate

Mensagem por Pokedlg Sab Jan 23, 2021 12:24 pm

Ok Curti isso
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 542
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : Dúvida sobre Instanciate WvDYdlf

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum