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:
NavMashAgent
modelos de braços 3d
Jogo estilo clash of clans
Como ver dos 2 lados de um plane ou quad?
[TUTORIAL] Criando jogo de cartas com I.A (C# e Visual Studio) - Parte 01
PITCH para aceleração de carro. Como que faço mesmo?
Sistema de Yu-Gi-Oh! - ATT [2020]
[ASSET] Script Arma Completo Incluso Recuo. Incluso outros Scripts
Somar int, como faz pra ele adicionar o valor que eu quero.
Bug? no animator
Duvida Material c#
Unity Admob Erro
Unity - Lentidão e Aceleração alteradas do nada!!!
Como faço para mudar o valor de uma float gradualmente
[TUTORIAL] Criando um simples Multiplayer [UNITY 5]
Como selecionar ou desselecionar uma imagem na Unity com uma borda?
Random Material
Dúvida sobre detecção do personagem
Procurando Equipe para Dev de um Gta Brasileiro.
Problemas com o transform.position com GameObjects 3D
Shaders
Botão no canvas faz o player movimentar
Sistema de Screenshots v2
Textura está bugada ficando branco em uma parte
Calculadora com raiz quadrada C#
Conectar ao servidor
Script de tiro unity 3d
Barra de procura
Randomizar objetos em posições válidas.
Unity-Transform.position e Rigidbory VS CharacterController. Qual o melhor?
[RESOLVIDO] network transform e network identity nos objetos filhos
Como trocar um sprite pelo outro?
Como faço para detectar a velocidade do meu player?
como faço um multiplayer na unity 5?
Dúvida sobre "Luzinha"?
Meu primero multiplayer online game feito no unity
Como mudar a cor de um sprite?
Demo do meu jogo Survival Zombie
Unity5 FBX Exporter (Free Package/Asset)
Personagem tremendo
[RESOLVIDO] Movetowards depois de esperar um tempo, não funciona!
Como fazer para aparecer poucas resoluções no meu menu de opções.
Contagem C#
Raycast colidindo com Player
Duvidas sobre soma entre float
Como faço para modificar o ponto incial e direcionar um raycast?
Unity
como resolver bordas pixelizadas?
Transformação de personagem
ao buildar para android o jogo tem compotamento diferente
[RESOLVIDO] Copiar a rotação de um Objeto para outro.
Ajuda com php
Animação não está a funcionar
[RESOLVIDO] Duvida com raycast
Animator
FixedUpdate Fica Dando Erro na Hora que a Colisão Acontece
ERRO NO JOGO BUILDADO, MAS OCORRE TUDO CERTO NO CONSOLE
Preciso de dicas para configurar o Bake do Lighting Para Android
como dminuir o lag no meu unity 5
Qual seria a melhor maneira de criar um Map Mundi interativo?
Ativar Ui apenas se o player estiver perto do objeto especifico
Tela de missão
[RESOLVIDO] Como fazer efeitos sonoros tocarem aleatoriamente
Collab Arruinando meu Projeto
Textura escura
Erro no SketchUP
3D Text Material Sobressalente
[RESOLVIDO] Problema no Input System
Como faço para um objeto ficar num tom de azul?
[RESOLVIDO] erro: ''ArgumentException: Input Button jump is not setup'' ?
Photon Pun2 - Error: NewScene Clean
[TUTORIAL] Acessar o objeto pai de algum hit.
[RESOLVIDO] Encontrar um objeto que está dentro de um Prefab.
[TUTORIAL] Inimigo olhar para você (Java Script)
[RESOLVIDO] Erro no Script tocar Audio
[RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Duvida sobre deixar jogo online.
Unity - Animator Controller sendo apagado sozinho
[RESOLVIDO] Meu jogo ta com uns bug no fog linear. o chão fica preto :/
[RESOLVIDO] AI Points e NavMesh
[RESOLVIDO] Como pegar moeda e ela desaparecer?
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
Como desativar o FirstPersonController
Como tira Application.UptadeScene?
Gostaria de fazer a animação do arco seguir animação do personagem
Animação Blender para Unity?
[RESOLVIDO] Unity - Giro do Personagem não está funcionando direito
Bug - Unity rodando com menos FPS no BAIXO e MAIS no ULTRA
[RESOLVIDO] Dúvida sobre multiplayer
Luz atravessando paredes
Problema de compilação
[RESOLVIDO] LayerMask
c# unity
[TUTORIAL] Banco de dados || MySQL
[RESOLVIDO] Fade In e Out na Timeline
[RESOLVIDO] Unity - Testar o Jogo pelo Celular em Tempo Real
Ajuda com Grappling hook
[RESOLVIDO] Erro criando IA inimigo
[RESOLVIDO] Animator
Ontem à(s) 11:27 pm
Ontem à(s) 11:16 pm
Ontem à(s) 5:48 pm
Ontem à(s) 3:12 pm
Ontem à(s) 9:34 am
Sab Maio 15, 2021 10:47 pm
Sab Maio 15, 2021 9:43 pm
Sab Maio 15, 2021 8:33 pm
Sab Maio 15, 2021 6:06 pm
Sex Maio 14, 2021 7:42 pm
Sex Maio 14, 2021 2:08 pm
Sex Maio 14, 2021 10:50 am
Sex Maio 14, 2021 2:12 am
Qui Maio 13, 2021 11:39 pm
Qui Maio 13, 2021 8:01 pm
Qui Maio 13, 2021 2:42 pm
Qui Maio 13, 2021 2:35 pm
Qui Maio 13, 2021 1:43 pm
Qui Maio 13, 2021 12:39 pm
Qui Maio 13, 2021 11:36 am
Qui Maio 13, 2021 8:38 am
Qua Maio 12, 2021 10:25 pm
Qua Maio 12, 2021 4:59 pm
Qua Maio 12, 2021 4:24 pm
Qua Maio 12, 2021 2:15 pm
Qua Maio 12, 2021 12:59 pm
Ter Maio 11, 2021 11:27 pm
Ter Maio 11, 2021 6:59 pm
Ter Maio 11, 2021 4:07 pm
Seg Maio 10, 2021 9:53 pm
Seg Maio 10, 2021 7:13 pm
Seg Maio 10, 2021 7:05 pm
Seg Maio 10, 2021 5:19 pm
Seg Maio 10, 2021 4:42 pm
Seg Maio 10, 2021 3:19 pm
Seg Maio 10, 2021 12:43 pm
Seg Maio 10, 2021 9:23 am
Dom Maio 09, 2021 4:08 pm
Sab Maio 08, 2021 4:57 pm
Sab Maio 08, 2021 4:56 pm
Sab Maio 08, 2021 4:31 pm
Sab Maio 08, 2021 3:50 pm
Sab Maio 08, 2021 2:30 pm
Sex Maio 07, 2021 8:56 pm
Sex Maio 07, 2021 8:14 pm
Sex Maio 07, 2021 3:15 pm
Sex Maio 07, 2021 10:23 am
Sex Maio 07, 2021 8:24 am
Qui Maio 06, 2021 9:32 pm
Qui Maio 06, 2021 8:46 pm
Qui Maio 06, 2021 8:15 pm
Qui Maio 06, 2021 8:14 pm
Qui Maio 06, 2021 3:21 pm
Qui Maio 06, 2021 2:46 pm
Qui Maio 06, 2021 11:36 am
Qui Maio 06, 2021 3:08 am
Qua Maio 05, 2021 8:27 pm
Ter Maio 04, 2021 6:50 pm
Ter Maio 04, 2021 7:38 am
Seg Maio 03, 2021 11:34 am
Seg Maio 03, 2021 11:22 am
Seg Maio 03, 2021 8:53 am
Seg Maio 03, 2021 2:44 am
Dom Maio 02, 2021 6:04 pm
Dom Maio 02, 2021 5:22 pm
Dom Maio 02, 2021 5:03 pm
Dom Maio 02, 2021 5:00 pm
Sab Maio 01, 2021 8:02 pm
Sab Maio 01, 2021 12:07 pm
Sab Maio 01, 2021 11:02 am
Sab Maio 01, 2021 7:08 am
Sex Abr 30, 2021 4:34 pm
Sex Abr 30, 2021 2:12 pm
Qui Abr 29, 2021 1:26 pm
Qui Abr 29, 2021 12:48 pm
Qui Abr 29, 2021 12:45 pm
Qui Abr 29, 2021 11:02 am
Qui Abr 29, 2021 12:31 am
Qua Abr 28, 2021 10:53 pm
Qua Abr 28, 2021 6:01 pm
Qua Abr 28, 2021 3:55 pm
Qua Abr 28, 2021 2:35 pm
Qua Abr 28, 2021 2:03 pm
Ter Abr 27, 2021 10:50 pm
Seg Abr 26, 2021 10:07 pm
Seg Abr 26, 2021 3:18 pm
Seg Abr 26, 2021 12:41 am
Seg Abr 26, 2021 12:28 am
Dom Abr 25, 2021 10:01 pm
Dom Abr 25, 2021 8:17 pm
Dom Abr 25, 2021 1:52 am
Sab Abr 24, 2021 3:37 pm
Sab Abr 24, 2021 11:34 am
Sex Abr 23, 2021 11:46 pm
Sex Abr 23, 2021 3:22 pm
Qui Abr 22, 2021 7:54 pm
Qui Abr 22, 2021 2:18 pm
Qui Abr 22, 2021 6:45 am
Qua Abr 21, 2021 10:54 pm
Fagner
JulioWinchester
TigerStudios
verme1311
MajorH
RodrigoPrivilegium
MajorH
Felipe42
Fagner
WLCS22
Fagner
nando07
WLCS22
MayLeone
RGT2020
tautologias345
Pokedlg
Xavier
glauco
vphyre
Joana
acefogo
AnderGames
marbiel18
AthaideYi
Xavier
Charlesoff
Joana
Mozinhas2
WLCS22
Xavier
Pokedlg
Charlesoff
TIKO
Fagner
RGT2020
stratengine
stratengine
ProBrStalker
xYcar
WLCS22
Pokedlg
Mozinhas2
Charlesoff
stratengine
Charlesoff
Joana
NKKF
Xavier
Fagner
Fagner
loucoporjogo
Joana
Pokedlg
Xavier
adrianobros2
stratengine
glauco
speedluk
Traygus
MarcosSchultz
Maria Elisa
BlesseD
NKKF
Fagner
Fagner
Fagner
Rangel Oblivion
Phelipe
Pokedlg
Elizeuvix
MartinsCG
RenatoBarreto
MartinsCG
FelipeSouza11
adrianobros2
loucoporjogo
WLCS22
JulioWinchester
TIKO
FelixTedesco
dirceuinfo
FelixTedesco
poyser
hendrick22
ProblemX
WLCS22
NKKF
Xavier
SauloeArthur
MayLeone
hellside
Mozinhas2
LuccaGiffoni
Triskal
WLCS22
JohnRambo
SauloeArthur
Fagner

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 : 151
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 : 3441
REPUTAÇÃO : 541
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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 : 151
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
ProgramadorMaster

Masculino PONTOS : 885
REPUTAÇÃO : 145
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : Dúvida sobre Instanciate Aad8pUi

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