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:
Fazer um variável bool ficar alternando de verdadeiro pra falso.
Fazer inimigo jogar coisas no player
Problema com um projeto na Unity 3d, versão 2018.4.26
Como alterar um GameObject dentro de uma array
Mini-Map
[RESOLVIDO] Rotação, c#.
objeto ir lentamente para uma posicao!
Numeros da calculadora nao fica em fileira ajudem?
Não consigo fazer verificação se meu texto esta escrito "12345"...
Configurar NPCs
Coletar um item e equipar sem inventario
Emulador fica com tela preta qnd inicia meu jogo android
INTERCALAÇÃO ENTRE 2 ATAQUES DE UM INIMIGO
Problemas de Python no Blender.
[RESOLVIDO] Instanciar objetos com um limite.
[RESOLVIDO] Câmera do Sketch ao exportar para Unity
Erro no Lightmap
Empurrar e puxar caixas com animação POR FAVOR.
[RESOLVIDO] Teclado do celular
Alguem tem os escripts pra sair sangue do inimigo e do player
Arrays com texturas diferentes!!
[RESOLVIDO] COMO RETIRAR UMA ANIMAÇAO DE UMA FBX
FORMACAO DE EQUIPE
Opinião sobre meu projeto (O Labirinto)
[RESOLVIDO] Jogador por nome dentro do jogo
Problema 'Unity Package Manager Error'
Package Manager, erro de dependência
[RESOLVIDO] Como mostrar a posição Y do objeto em um texto
sistema de valores com mensagem por faixa
[RESOLVIDO]Como fazer uma imagem desaparecer lentamente.
Opinião sobre um projeto (Burst Task)
Oportunidade de Freelancer
[ARQUIVOS INDISPONÍVEIS]Sistema PDV, Lojas Em Geral - C#
[RESOLVIDO] Como mostro algumas variáveis em um editor de inspector
[RESOLVIDO] Não consigo somar valor do texto
Projeto de um jogo em 3D... (Estou pensando em mudar a engine dele)
[RESOLVIDOS] script animator
Meu objeto me atravessa quando esta girando.
Limitar area de movimento da Camera
particulas e som iniciarem e pararem com o tempo!!??
[TUTORIAL] FPS Camera e movimento
Como faço Load Scene aleatorio?
Nao consigo alterar o valor da variavel de outro script
Tutorial script para passar de fase por pontos.
usar resultado em text de fórmula e multiplicar por um valor
Como verificar se foi meu player que tocou no CUBO?
[RESOLVIDO] player apontar a arma para o centro da tela
Verificar espaco se ocupado ou nao e limitar as instancias!!
Como faço para saber o ping na Photon engine?
Objeto atravessando colisor
Camera tremer ao pressionar tecla
[RESOLVIDO] Mover objeto depois de instanciado ate o player
[TUTORIAL] Unity 5 - Sistema Completo de PORTAS E CHAVES
Troca de Material por input
Imagem do celular no jogo!
[TUTORIAL] Camera de visão noturna (Night vision) na Unity 5
Unity - Trigger detectando os dois personagens - ERRO!
Ajuda com respawn do inimigo
[TUTORIAL] Banco de dados || MySQL
[RESOLVIDO] Qual é o nome desse efeito?
Spawn SlenderMan
Temporizador/Cronometro/TimerEvents
Como resolver este erro na Play store do google?
Como criar uma onda
Duvida com codigo toutch
[RESOLVIDO] Dúvida sobre menu
Ajuda c#
[RESOLVIDO] Camera Touch Mobile sem atrapalhar os botoes UI
[RESOLVIDO]Erro: Your project path contains non-ASCII characters....
script 2D double jump erro no 2 pulo que não pla ou pula alto demais
[TUTORIAL] Unity 5 - Pulo Duplo (Double Jump) para 2D e 3D
[RESOLVIDO]Operação com toggle group
Instanciar jogadores num array de transform - Photon Multiplayer
Como posso fazer um botão de ligar um GameObject aleatorio?
Como eu passo os valores de direção pro animator ?
Sistema de Escala de Renderização sem URP ou HDRP
[RESOLVIDO] Efeito de distorcer/esticar/borrar a imagem do jogo
ajuda: desenvolver sistema de inventario/mochila
[RESOLVIDO] [Character Controller] o Capsula Collider Dele é Só pra Bonito??
[RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!
[RESOLVIDO] Qual a melhor forma de configurar resolução para mobile?
Spawnar se tiver mesa disponivel
[RESOLVIDO] Ajuda com iluminação
[RESOLVIDO] Erro Som.
script para Mouse Look
operação com inputfield
[RESOLVIDO] Erro Material C#
[RESOLVIDO] Script para detecção de inimigos
Salvar Dados Binários no Servidor e Reabrir em jogo - Unity
[RESOLVIDO] Dúvida com o Novo Input System
Carregamento de caixas
ANIMAÇÃO EM MESH
Como ativar um gameobjet com uma tag especifica?
[TUTORIAL] Resolver bug dos reflexos, Unity 5.5+
Ajuda para criar um botão continuar.
ao buildar para android o jogo tem compotamento diferente
NavMeshAgent
[RESOLVIDO] Alguem pode me ajudar? [Gradle error, o que fazer?]
Como Modificar ossos de animações via script
Hoje à(s) 9:03 pm
Hoje à(s) 8:39 pm
Hoje à(s) 2:08 pm
Hoje à(s) 12:24 pm
Hoje à(s) 11:24 am
Ontem à(s) 11:08 pm
Ontem à(s) 6:14 pm
Ontem à(s) 6:03 pm
Ontem à(s) 6:00 pm
Ontem à(s) 4:13 pm
Ontem à(s) 2:19 am
Ontem à(s) 2:15 am
Sab Jun 19, 2021 1:28 pm
Sab Jun 19, 2021 10:05 am
Sab Jun 19, 2021 9:15 am
Sex Jun 18, 2021 9:20 pm
Sex Jun 18, 2021 8:35 pm
Sex Jun 18, 2021 1:58 pm
Sex Jun 18, 2021 9:30 am
Sex Jun 18, 2021 12:26 am
Qui Jun 17, 2021 8:05 pm
Qui Jun 17, 2021 5:05 pm
Qua Jun 16, 2021 10:13 am
Ter Jun 15, 2021 11:31 am
Ter Jun 15, 2021 8:39 am
Seg Jun 14, 2021 7:53 pm
Seg Jun 14, 2021 7:05 pm
Seg Jun 14, 2021 3:47 pm
Seg Jun 14, 2021 3:40 pm
Seg Jun 14, 2021 3:30 pm
Dom Jun 13, 2021 10:24 pm
Dom Jun 13, 2021 6:01 pm
Dom Jun 13, 2021 5:59 pm
Dom Jun 13, 2021 5:49 pm
Dom Jun 13, 2021 11:39 am
Sab Jun 12, 2021 9:46 am
Sab Jun 12, 2021 9:37 am
Sex Jun 11, 2021 5:43 pm
Sex Jun 11, 2021 11:10 am
Sex Jun 11, 2021 9:12 am
Qui Jun 10, 2021 8:31 pm
Qui Jun 10, 2021 4:45 pm
Qui Jun 10, 2021 4:41 pm
Qui Jun 10, 2021 4:38 pm
Qui Jun 10, 2021 1:51 pm
Qua Jun 09, 2021 7:23 pm
Qua Jun 09, 2021 12:30 am
Ter Jun 08, 2021 11:50 pm
Ter Jun 08, 2021 6:23 pm
Ter Jun 08, 2021 4:36 pm
Ter Jun 08, 2021 2:57 am
Seg Jun 07, 2021 8:33 pm
Seg Jun 07, 2021 2:02 pm
Seg Jun 07, 2021 1:06 pm
Seg Jun 07, 2021 11:11 am
Dom Jun 06, 2021 9:36 pm
Dom Jun 06, 2021 6:41 pm
Dom Jun 06, 2021 1:49 pm
Sab Jun 05, 2021 4:59 pm
Sab Jun 05, 2021 1:00 am
Sex Jun 04, 2021 10:14 pm
Sex Jun 04, 2021 7:02 pm
Sex Jun 04, 2021 1:57 pm
Qui Jun 03, 2021 11:11 pm
Qui Jun 03, 2021 4:41 pm
Qui Jun 03, 2021 11:25 am
Qua Jun 02, 2021 6:21 pm
Qua Jun 02, 2021 2:51 pm
Qua Jun 02, 2021 2:10 pm
Ter Jun 01, 2021 3:53 pm
Ter Jun 01, 2021 3:44 pm
Ter Jun 01, 2021 2:18 pm
Seg Maio 31, 2021 9:49 pm
Seg Maio 31, 2021 7:35 pm
Seg Maio 31, 2021 12:13 pm
Dom Maio 30, 2021 11:24 pm
Dom Maio 30, 2021 10:13 pm
Dom Maio 30, 2021 3:16 pm
Sab Maio 29, 2021 1:39 pm
Sab Maio 29, 2021 12:10 pm
Sex Maio 28, 2021 6:16 pm
Sex Maio 28, 2021 4:31 pm
Sex Maio 28, 2021 3:51 pm
Sex Maio 28, 2021 9:17 am
Qui Maio 27, 2021 11:03 pm
Qui Maio 27, 2021 3:45 pm
Qua Maio 26, 2021 3:29 pm
Qua Maio 26, 2021 2:03 pm
Ter Maio 25, 2021 2:38 pm
Ter Maio 25, 2021 10:51 am
Seg Maio 24, 2021 11:02 pm
Seg Maio 24, 2021 4:17 pm
Seg Maio 24, 2021 12:33 am
Dom Maio 23, 2021 9:54 pm
Dom Maio 23, 2021 4:35 pm
Sab Maio 22, 2021 12:22 pm
Sab Maio 22, 2021 9:18 am
Sab Maio 22, 2021 12:20 am
Sex Maio 21, 2021 8:53 pm
vinicius12412
Fagner
Pokedlg
Maston
marx478
Mozinhas2
Joaozim500
IDK
jhonih00010
ProBrStalker
JulioWinchester
Crash Psycho
ViniciusTKH
Fagner
Pokedlg
Leooo101006
MarceloYBP
TIKO
Fagner
Felipe42
Fagner
Felipe42
Cristhofer Marques
Fagner
capim22
Leandroigor
Pokedlg
amanda.ilg
Fagner
jeancvo3
poyser
Chilinger
Chilinger
Charlesoff
jhonih00010
NoctisDregon
Phirdy
diegopds
TigerStudios
capim22
Alessa1120
JulioWinchester
JulioWinchester
JulioWinchester
eduardonog30
jhonih00010
gui78h3
Pokedlg
Charlesoff
Charlesoff
JulioWinchester
capim22
hancyaragon
Mozinhas2
Fagner
MarcosSchultz
WLCS22
paulo.andrade
Celerom
Neyuriki
ItzDoog
MatheusEleodoro
JulioWinchester
Joana
loucoporjogo
Pokedlg
Mozinhas2
Fagner
eduardonog30
Phirdy
Phirdy
eduardonog30
DevFrustrada
Jäger
danisanca
Franttyck
Rangel Oblivion
marcoemayelli
rafaelsmoreiras
Pokedlg
verme1311
thgsousa342
Charlesoff
Pokedlg
SERGIOCS
eduardonog30
Pokedlg
danisanca
CleiMac
RenatoBarreto
Pokedlg
Franttyck
MayLeone
NerdGuin
lauderson
Matrirxp
hellside
verme1311
hendrick22

[RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Ir em baixo

Resolvido [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Ter Maio 25, 2021 3:45 pm

Galera como faco para seguinte tenho um objeto que troca as texturas ja instanciado e funcionando!
porem nesse objeto tem um filho que tb preciso trocar as texturas com outro botao UI nao pode ser o msm botao do pai, 

abaixo e o codigo instanciando o objeto pai que ja esta funcionando , porem o filho eu nao consigo mudar as texturas ( as texturas ja esta em List)

public void InstanciarBalao(int idBalao)
{
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
}

Obg a tds!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Ter Maio 25, 2021 4:41 pm

Voce pode utilizar o GetChild(index) e coloca o index do Objeto filho ou usar um for caso queira pegar todos objetos filhos. Por Exemplo:
 
[RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! 4Hz7pUk
Código:
public void SetChildTexture(int index)
{
    MeshRenderer meshBalaoFilho =  novoBalao.transform.GetChild(index).GetComponent<MeshRenderer>();
    idBalaoTexture = 0;
    meshBalaoFilho.material.mainTexture = balaoTexture[idBalaoTexture];
}

public void SetAllChildrenTexture()
{
    for(int i = 0; i<novoBalao.transform.childCount; i++)
    {
        MeshRenderer meshBalaoFilho =  novoBalao.transform.GetChild(i).GetComponent<MeshRenderer>();
        idBalaoTexture = 0;
        meshBalaoFilho.material.mainTexture = balaoTexture[idBalaoTexture];
    }
}
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Ter Maio 25, 2021 6:10 pm

@Pokedlg escreveu:Voce pode utilizar o GetChild(index) e coloca o index do Objeto filho ou usar um for caso queira pegar todos objetos filhos. Por Exemplo:
 
[RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! 4Hz7pUk
Código:
public void SetChildTexture(int index)
{
    MeshRenderer meshBalaoFilho =  novoBalao.transform.GetChild(index).GetComponent<MeshRenderer>();
    idBalaoTexture = 0;
    meshBalaoFilho.material.mainTexture = balaoTexture[idBalaoTexture];
}

public void SetAllChildrenTexture()
{
    for(int i = 0; i<novoBalao.transform.childCount; i++)
    {
        MeshRenderer meshBalaoFilho =  novoBalao.transform.GetChild(i).GetComponent<MeshRenderer>();
        idBalaoTexture = 0;
        meshBalaoFilho.material.mainTexture = balaoTexture[idBalaoTexture];
    }
}

pensei em uma maneira mais limpa como faco para ao invez de filho eu instanciar esse objeto embaixo do meu balao e depois torna la filha como faco isso?

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Ter Maio 25, 2021 6:26 pm

Ata, acho q entendi. Voce utiliza o SetParent(Transform parent) para deixar um objeto como filho de outro, mas o próprio método Instantiate já possui uma sobrecarga para isso, como voce quer instancia-lo.

Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

Exemplo:
Código:
public GameObject objFilho;

public void InstantiateChildObject()
{
    GameObject newChildObj = Instantiate(objFilho, Vector3.zero, Quaternion.identity, novoBalao.transform);
}

Seria isso?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Ter Maio 25, 2021 6:33 pm

@Pokedlg escreveu:Ata, acho q entendi. Voce utiliza o SetParent(Transform parent) para deixar um objeto como filho de outro, mas o próprio método Instantiate já possui uma sobrecarga para isso, como voce quer instancia-lo.

Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

Exemplo:
Código:
public GameObject objFilho;

public void InstantiateChildObject()
{
    GameObject newChildObj = Instantiate(objFilho, Vector3.zero, Quaternion.identity, novoBalao.transform);
}

Seria isso?

Acho q nao daria certo pq tenho varios baloes diferentes assim daria erro, quero instancia um objeto exatamente embaixo do meu novoBalao que ja e instanciado normalmento , so que esse obejto usa texturas que irei muda las com o evenTrigger! obg pela ajuda

----> novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Ter Maio 25, 2021 6:46 pm

Veja se eu entendi, Voce instancia o balao e muda sua textura por um botao, voce quer instanciar um objeto em baixo do seu balao e deixa-lo como filho e possuir um novo botao que altera a textura desse objeto filho, é isso?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Ter Maio 25, 2021 7:08 pm

@Pokedlg escreveu:Veja se eu entendi, Voce instancia o balao e muda sua textura por um botao, voce quer instanciar um objeto em baixo do seu balao e deixa-lo como filho e possuir um novo botao que altera a textura desse objeto filho, é isso?
Exatamente isso! E uma bandeira que o balão vai levar quando o balão instância eu posso mudar a textura dele , quero fazer o mesmo com a bandeira , instânciado ela embaixo do balão e TB mudar as texturas dela!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 12:07 am

Olha fiz este exemplo utilizando o método Instantiate e colocando o objeto pai como o novo balao.
A esfera é a representação do Balao o plane da Bandeira.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 7:39 am

@Pokedlg escreveu:Olha fiz este exemplo utilizando o método Instantiate e colocando o objeto pai como o novo balao.
A esfera é a representação do Balao o plane da Bandeira.
Bom dia perfeito Man, como faço isso ? Por acaso consegue deixar o código por favor ? Desculpa ser chato e sei q e trabalhoso mas essa parte de instânciar ainda quebro cabeça Po brigadão msm !!!! Show de bola

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 7:46 am

Bom dia amigo, que isso, denada Smile . Vou disponibilizar o código daqui a um trmpo, pois nao to com o pc agora, mas ja pegando, ja te mando. O que eu fiz foi só criar um prefab da bandeira e quando voce clica no botao do balao, na mesma funçao instancia a bandeira um pouco abaixo dele. E entao criei um outro botao que modifica a meshRenderer drssa nova bandeira instanciada.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 7:54 am

@Pokedlg escreveu:Bom dia amigo, que isso, denada Smile . Vou disponibilizar o código daqui a um trmpo, pois nao to com o pc agora, mas ja pegando, ja te mando. O que eu fiz foi só criar um prefab da bandeira e quando voce clica no botao do balao, na mesma
 funçao instancia a bandeira um pouco abaixo dele. E entao criei um outro botao que modifica a meshRenderer drssa nova bandeira instanciada.
Show de bola até msm o botão com a textura eu n sei fazer achei maneira a ideia o botão mostrar qual textura aplicada !!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 2:54 pm

Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 3:37 pm

@Pokedlg escreveu:Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.

poxa amigo muito obg por todo esforco sei o trabalho que deu e desejo a vc td sucesso , eu  nao consegui  fazer funcionar pq ja tenho a List meus baloes q sao varios modelos diferentes instanciando certinho entao so tentei adaptar a bandeira mas  nao esta instancaiando a bandeira ainda nao da erro nenhum so nao instancia e eu ja arrastei a msm para o gameobject bandeira , n sei se vc pode me add zap 24988284425 se nao puder irei entender , photoshop eu mexo sim obg amigo!!

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;


public class Botoes : MonoBehaviour
{
private int idBandeiraTexture = 0;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

public void InstanciarBalao(int idBalao)
{
// List<GameObject> balaoList = new List<GameObject>();
// balao = new List<GameObject>();
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0, -0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

    }





capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 3:56 pm

@capim22 escreveu:
@Pokedlg escreveu:Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.

poxa amigo muito obg por todo esforco sei o trabalho que deu e desejo a vc td sucesso , eu  nao consegui  fazer funcionar pq ja tenho a List meus baloes q sao varios modelos diferentes instanciando certinho entao so tentei adaptar a bandeira mas  nao esta instancaiando a bandeira ainda nao da erro nenhum so nao instancia e eu ja arrastei a msm para o gameobject bandeira , n sei se vc pode me add zap 24988284425 se nao puder irei entender , photoshop eu mexo sim obg amigo!!

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;


public class Botoes : MonoBehaviour
{
private int idBandeiraTexture = 0;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

public void InstanciarBalao(int idBalao)
{
// List<GameObject> balaoList = new List<GameObject>();
// balao = new List<GameObject>();
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0, -0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

    }

percebi uma coisa esta dando esse erro : 
MissingComponentException: There is no 'MeshRenderer' attached to the "Bandeira(Clone)" game object, but a script is trying to access it.
You probably need to add a MeshRenderer to the game object "Bandeira(Clone)". Or your script needs to check if the component is attached before using it.
e tb percebi q ela esta sendo instanciada sim porem em outro local bem distante do balao, minha bandeira usa o cloth skinned meshrenderer. msm c erro ela e instanciada porem longe do balao !



capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 5:54 pm

@capim22 escreveu:
@capim22 escreveu:
@Pokedlg escreveu:Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.

poxa amigo muito obg por todo esforco sei o trabalho que deu e desejo a vc td sucesso , eu  nao consegui  fazer funcionar pq ja tenho a List meus baloes q sao varios modelos diferentes instanciando certinho entao so tentei adaptar a bandeira mas  nao esta instancaiando a bandeira ainda nao da erro nenhum so nao instancia e eu ja arrastei a msm para o gameobject bandeira , n sei se vc pode me add zap 24988284425 se nao puder irei entender , photoshop eu mexo sim obg amigo!!

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;


public class Botoes : MonoBehaviour
{
private int idBandeiraTexture = 0;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

public void InstanciarBalao(int idBalao)
{
// List<GameObject> balaoList = new List<GameObject>();
// balao = new List<GameObject>();
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0, -0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

    }

percebi uma coisa esta dando esse erro : 
MissingComponentException: There is no 'MeshRenderer' attached to the "Bandeira(Clone)" game object, but a script is trying to access it.
You probably need to add a MeshRenderer to the game object "Bandeira(Clone)". Or your script needs to check if the component is attached before using it.
e tb percebi q ela esta sendo instanciada sim porem em outro local bem distante do balao, minha bandeira usa o cloth skinned meshrenderer. msm c erro ela e instanciada porem longe do balao !

a bandeira esta sendo isntanciada bem longe do balao


novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0,-0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
 MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 6:00 pm

Pode ser talvez por causa do cloth. Voce usou o Paint para segurar a bandeira? Porque ela pode estar caindo infinitamente por causa do cloth.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 6:03 pm

@Pokedlg escreveu:Pode ser talvez por causa do cloth. Voce usou o Paint para segurar a bandeira? Porque ela pode estar caindo infinitamente por causa do cloth.
Sim usei e minimio o jogo e vejo a bandeira instanciada pela scene ela esta longe e parada n esta caindo!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 6:04 pm

@capim22 escreveu:
@Pokedlg escreveu:Pode ser talvez por causa do cloth. Voce usou o Paint para segurar a bandeira? Porque ela pode estar caindo infinitamente por causa do cloth.
Sim usei e minimio o jogo e vejo a bandeira instanciada pela scene ela esta longe e parada n esta caindo!!
eu fiz teste ate msm com um cubo no lugar da bandeira e tb instancia longe!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 6:06 pm

Que estranho. Voce poderia mandar imagens?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 6:11 pm

@capim22 escreveu:
@capim22 escreveu:
@Pokedlg escreveu:Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.

poxa amigo muito obg por todo esforco sei o trabalho que deu e desejo a vc td sucesso , eu  nao consegui  fazer funcionar pq ja tenho a List meus baloes q sao varios modelos diferentes instanciando certinho entao so tentei adaptar a bandeira mas  nao esta instancaiando a bandeira ainda nao da erro nenhum so nao instancia e eu ja arrastei a msm para o gameobject bandeira , n sei se vc pode me add zap 24988284425 se nao puder irei entender , photoshop eu mexo sim obg amigo!!

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;


public class Botoes : MonoBehaviour
{
private int idBandeiraTexture = 0;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

public void InstanciarBalao(int idBalao)
{
// List<GameObject> balaoList = new List<GameObject>();
// balao = new List<GameObject>();
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0, -0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

    }

percebi uma coisa esta dando esse erro : 
MissingComponentException: There is no 'MeshRenderer' attached to the "Bandeira(Clone)" game object, but a script is trying to access it.
You probably need to add a MeshRenderer to the game object "Bandeira(Clone)". Or your script needs to check if the component is attached before using it.
e tb percebi q ela esta sendo instanciada sim porem em outro local bem distante do balao, minha bandeira usa o cloth skinned meshrenderer. msm c erro ela e instanciada porem longe do balao !




Voce terá que usar o SkinnedMeshRenderer para mudar o material da banderia, então:
Código:
private SkinnedMeshRenderer MeshBandeira;
//...
MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>();
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Qui Maio 27, 2021 6:36 pm

@Pokedlg escreveu:
@capim22 escreveu:
@capim22 escreveu:
@Pokedlg escreveu:Primeiro cria o prefab da bandeira depois voce irá instancia-la na mesma função do botao que instancia o balao. Como voce quer poder alterar a textura da bandeira também, voce precisa criar uma varaivel meshRenderer, que será a meshRenderer da bandeira. Praticamente a mesma coisa que voce fez para instanciar e  modificar a textura do seu balao. Para fazer o botao que mostra em qual textura o balao e a bandeira está, eu criei uma imagem como filho do botao da Textura e deixei na posição (0, 0, 0) para centralizar, os sprites mostrando a textura eu fiz no Photoshop mesmo, recortei em circulos as texturas e coloquei na array  de Sprites viewTextureButton e coloquei nas mesmas posiçoes que a array de texturas. Por ex. A 1° Textura é a listrada preto e branco, o primeiro sprite da array viewTextureButton é o listrado e branco... e assim continua. Não é uma opção muito viável, por exemplo eu poderia ter feito um shader para isso, seria bem menos trabalhoso. Dependendo do botao clicado para mudar a textura, a variavel int Id dos respectivos objetos (balao ou bandeira) aumentam, alterando o visualizador de textura do botao de acordo com a textura que a esfera está, e o mesmo se aplica para a bandeira, porém com variaveis diferentes. Qualquer duvida é só perguntar.


Funções Explicadas:

Variáveis e Função Instanciar Balão e Bandeira
Código:
   public GameObject balloon, newBalloon, flag; //GameObjects a serem instanciados, coloque o prefab deles
    private MeshRenderer meshBalloon, meshFlag; //MeshRenderer do balao e da bandeira
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag; //Botoes
    public Texture[] balloonTextures; //Texturas do Balao
    public Sprite[] viewTextureButton; //Sprites que mostram em que textura esta
    private int idBallonTexture, idFlagTexture = 0; //Id para alterar a textura

    public void InstantiateBalloon() //Funcao que instancia o balao e a bandeira
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity); //Instancia o balao
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Coloca a textura inicial do balao

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform); //Instancia a bandeira um pouco abaixo do seu objeto Pai, o novoBalao
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Coloca a textura inicial da bandeira
    }


Função Modificar Textura de Objetos e do Visualizador:
Código:
   public void ChangeBalloonTexture() //Funcao mudar a textura do balao
    {
        idBallonTexture++; //O index aumenta para mudar para a proxima textura
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture]; //Pega a imagem do botao que mostra em que textura do balao esta (visualizador) e modifica de acordo com o index da textura
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture]; //Modifica a textura do balao
    }

    public void ChangeFlagTexture() //Funcao mudar a textura da bandeira
    {
        idFlagTexture++; //O index aumenta para mudar para a proxima textura
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0; //O index reseta caso passe do tamanho da array
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture]; //Modifica a textura da bandeira
    }


Script Completo:

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

public class Balloon : MonoBehaviour
{
    public GameObject balloon, newBalloon, flag;
    private MeshRenderer meshBalloon, meshFlag;
    public Button buttonInteract, buttonTextureBallon, buttonTextureFlag;
    public Texture[] balloonTextures;
    public Sprite[] viewTextureButton;
    private int idBallonTexture, idFlagTexture = 0;
    private bool holding = true;
    public Sprite hold, drop;

    void Start()
    {

    }

    void Update()
    {
        if (!holding) newBalloon.transform.position += Vector3.up * Time.deltaTime;
    }

    public void InstantiateBalloon()
    {
        newBalloon = Instantiate(balloon, new Vector3(0, 0.38f, 0), Quaternion.identity);
        meshBalloon = newBalloon.GetComponent<MeshRenderer>();
        idBallonTexture = 0;
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];

        idFlagTexture = 0;
        GameObject newFlag = Instantiate(flag, new Vector3(0,-0.4f,0), flag.transform.rotation, newBalloon.transform);
        meshFlag = newFlag.GetComponent<MeshRenderer>();
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void ChangeBalloonTexture()
    {
        idBallonTexture++;
        if (idBallonTexture >= balloonTextures.Length) idBallonTexture = 0;
        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        meshBalloon.material.mainTexture = balloonTextures[idBallonTexture];
    }
    public void ChangeFlagTexture()
    {
        idFlagTexture++;
        if (idFlagTexture >= balloonTextures.Length) idFlagTexture = 0;
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];
        meshFlag.material.mainTexture = balloonTextures[idFlagTexture];
    }

    public void DropBalloon()
    {
        holding = false;
        if (!holding)
        {
            buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = drop;
            StartCoroutine(DestroyBalloon());
        }

    }

    IEnumerator DestroyBalloon()
    {
        yield return new WaitForSeconds(3);
        holding = true;
        buttonInteract.transform.GetChild(0).GetComponent<Image>().sprite = hold;
        Destroy(newBalloon);

        idBallonTexture = 0;
        idFlagTexture = 0;

        buttonTextureBallon.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idBallonTexture];
        buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture];

    }
}


Caso queira adaptar a ideia de visualização das textura dos botoes e voce não sabe mexer no photoshop, se voce quiser pode me mandar as texturas que voce utiliza e eu faço o recorte delas em redondo.

poxa amigo muito obg por todo esforco sei o trabalho que deu e desejo a vc td sucesso , eu  nao consegui  fazer funcionar pq ja tenho a List meus baloes q sao varios modelos diferentes instanciando certinho entao so tentei adaptar a bandeira mas  nao esta instancaiando a bandeira ainda nao da erro nenhum so nao instancia e eu ja arrastei a msm para o gameobject bandeira , n sei se vc pode me add zap 24988284425 se nao puder irei entender , photoshop eu mexo sim obg amigo!!

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;


public class Botoes : MonoBehaviour
{
private int idBandeiraTexture = 0;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

public void InstanciarBalao(int idBalao)
{
// List<GameObject> balaoList = new List<GameObject>();
// balao = new List<GameObject>();
novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z),balao[idBalao].transform.rotation);
meshBalao = novoBalao.GetComponent<MeshRenderer>();
idBalaoTexture = 0;
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
idBandeiraTexture = 0;
 GameObject newFlag = Instantiate(bandeira, new Vector3(0, -0.4f, 0), bandeira.transform.rotation, novoBalao.transform);
 MeshBandeira = newFlag.GetComponent<MeshRenderer>();
MeshBandeira.material.mainTexture = balaoTexture [idBandeiraTexture];

    }

percebi uma coisa esta dando esse erro : 
MissingComponentException: There is no 'MeshRenderer' attached to the "Bandeira(Clone)" game object, but a script is trying to access it.
You probably need to add a MeshRenderer to the game object "Bandeira(Clone)". Or your script needs to check if the component is attached before using it.
e tb percebi q ela esta sendo instanciada sim porem em outro local bem distante do balao, minha bandeira usa o cloth skinned meshrenderer. msm c erro ela e instanciada porem longe do balao !




Voce terá que usar o SkinnedMeshRenderer para mudar o material da banderia, então:
Já fiz isso TB , o problema e q n instância perto do balão só instância bem longe ! Não está pegando a posição do balão instânciado!
Código:
private SkinnedMeshRenderer MeshBandeira;
//...
MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>();

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Qui Maio 27, 2021 6:58 pm

Opa amigo, desculpe, erro meu. Ele está instanciando em relação ao Mundo e não ao Pai. Tente fazer assim:
Código:
GameObject newFlag = Instantiate(bandeira, Vector3.zero, bandeira.transform.rotation, novoBalao.transform);
newFlag.localPosition = new Vector3(0, -0.8f, 0);
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 9:51 am

@Pokedlg escreveu:Opa amigo, desculpe, erro meu. Ele está instanciando em relação ao Mundo e não ao Pai. Tente fazer assim:
Código:
GameObject newFlag = Instantiate(bandeira, Vector3.zero, bandeira.transform.rotation, novoBalao.transform);
newFlag.localPosition = new Vector3(0, -0.8f, 0);

b dia que isso n precisa pedir desculpas , eu q tenho q pedir por ser chato, fiz oq falou e da erro LocalPosition

Assets\Botoes.cs(44,17): error CS1061: 'GameObject' does not contain a definition for 'localPosition' and no accessible extension method 'localPosition' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?)

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 10:01 am

Desculpe novamente  Closed Eyes. esqueci de utilizar o transform tente assim:
Código:
GameObject newFlag = Instantiate(bandeira, Vector3.zero, bandeira.transform.rotation, novoBalao.transform);
newFlag.transform.localPosition = new Vector3(0, -0.8f, 0);
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 10:15 am

@Pokedlg escreveu:Desculpe novamente  Closed Eyes. esqueci de utilizar o transform tente assim:
Código:
GameObject newFlag = Instantiate(bandeira, Vector3.zero, bandeira.transform.rotation, novoBalao.transform);
newFlag.transform.localPosition = new Vector3(0, -0.8f, 0);
muito obg amigo instanciou certinho, agora so esta dando erro na linha 46 , acho q e em relacaço as texturas da bandeira , tipo eu ja apliquei as texturas na prefab da bandeira , acho q p da certo eu teria q criar uma list nesse mesm script ne?

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 10:30 am

Qual é a linha 46 e o erro?
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 10:33 am

@Pokedlg escreveu:Qual é a linha 46 e o erro?
ta dando erro nessa linha 

 linha 46 = MeshBandeira.material.mainTexture = bandeiraTexture[idBandeiraTexture];

e na 73 
NullReferenceException: Object reference not set to an instance of an object
Botoes.ChangeFlagTexture () (at Assets/Botoes.cs:73)

linja 73 = MeshBandeira.material.mainTexture = bandeiraTexture[idBandeiraTexture];

falta so isso p resolver aqui obg por td ajuda !!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 10:38 am

Acredito que voce tenha que colocar as texturas na sua array "bandeiraTexture" ou atribuir o botao de mudar a textura. Denada  Smile Curti isso.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 11:06 am

@Pokedlg escreveu:Acredito que voce tenha que colocar as texturas na sua array "bandeiraTexture" ou atribuir o botao de mudar a textura. Denada  Smile Curti isso.
estranho ja atribui as texturas na array ja fiz o botao p troca das texturas , mas o msms erros nas msms linhas , e detalhe ele esta aplicando a ultima textura numero 22 ao invez da 0 conforme o script doidera!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 11:20 am

Voce trocou a variavel "MeshRenderer MeshBandeira" por "SkinnedMeshRenderer MeshBandeira" ? E colocou que 
Código:
 MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>();
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 11:57 am

@Pokedlg escreveu:Voce trocou a variavel "MeshRenderer MeshBandeira" por "SkinnedMeshRenderer MeshBandeira" ? E colocou que 
Código:
 MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>();
estou fazendo teste bem basico sem clouth por enqunto usando meshrenderer msm , o erro e o msm das duas linhas 

MeshBandeira.material.mainTexture = bandeiraTexture[idBandeiraTexture];

e eu ja atribui as texturas estranho!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 1:33 pm

@capim22 escreveu:
@Pokedlg escreveu:Voce trocou a variavel "MeshRenderer MeshBandeira" por "SkinnedMeshRenderer MeshBandeira" ? E colocou que 
Código:
 MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>();
estou fazendo teste bem basico sem clouth por enqunto usando meshrenderer msm , o erro e o msm das duas linhas 

MeshBandeira.material.mainTexture = bandeiraTexture[idBandeiraTexture];

e eu ja atribui as texturas estranho!!

Not allowed to access Renderer.material on prefab object. Use Renderer.sharedMaterial insteadUnityEngine.Renderer:get_material ()

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 1:38 pm

Voce terá que usar o sharedMaterial. Tente trocar a linha que faz a alteração da textura por essa:
Código:
MeshBandeira.sharedMaterial.mainTexture = balaoTexture [idBandeiraTexture];
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 1:49 pm

@Pokedlg escreveu:Voce terá que usar o sharedMaterial. Tente trocar a linha que faz a alteração da textura por essa:
Código:
MeshBandeira.sharedMaterial.mainTexture = balaoTexture [idBandeiraTexture];
kk tinha acabado de fazer isso ate msm antes , fucnionou porem so troca 2 texturas mesmo tendo as 22 texturas la !!

        idBandeiraTexture++; //O index aumenta para mudar para a proxima textura
        if (idBandeiraTexture >= bandeiraTexture.Length) { idBandeiraTexture = 0; } //O index reseta caso passe do tamanho da array
        // buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        MeshBandeira.sharedMaterial.mainTexture = bandeiraTexture[idBandeiraTexture];

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 1:55 pm

@capim22 escreveu:
@Pokedlg escreveu:Voce terá que usar o sharedMaterial. Tente trocar a linha que faz a alteração da textura por essa:
Código:
MeshBandeira.sharedMaterial.mainTexture = balaoTexture [idBandeiraTexture];
kk tinha acabado de fazer isso ate msm antes , fucnionou porem so troca 2 texturas mesmo tendo as 22 texturas la !!

        idBandeiraTexture++; //O index aumenta para mudar para a proxima textura
        if (idBandeiraTexture >= bandeiraTexture.Length) { idBandeiraTexture = 0; } //O index reseta caso passe do tamanho da array
        // buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        MeshBandeira.sharedMaterial.mainTexture = bandeiraTexture[idBandeiraTexture];
se eu tirar public void ChangeFlagTexture   --- > (int idBandeiraTexture) <------ funciona , vi outro erro q e que qd instancio outro balao a bandeira muda nos dois!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 2:06 pm

Isso não era para acontecer porque ele pega a mesh sempre da nova bandeira instaciada.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 2:16 pm

@Pokedlg escreveu:Isso não era para acontecer porque ele pega a mesh sempre da nova bandeira instaciada.
consegui resolver a troca de texturas porem so tem esse erro qd instancio outro balao a bandeira muda nos dois !!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 5:27 pm

@Pokedlg escreveu:Isso não era para acontecer porque ele pega a mesh sempre da nova bandeira instaciada.
Estranho estou preso nisso ate agora desde aquela  hora tentando mas sempre q instancio novo balao a bandeira muda nos dois!!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 6:01 pm

Estranho, aqui funciona normalmente, manda o codigo para eu ver o que possa estar acontecendo.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sex Maio 28, 2021 6:02 pm

@Pokedlg escreveu:Estranho, aqui funciona normalmente, manda o codigo para eu ver o que possa estar acontecendo.
obg msm

using UnityEngine.EventSystems;
using System.Collections.Generic;
using UnityEngine;



public class Botoes : MonoBehaviour
{
public Texture[] bandeiraTexture;
private int idBandeiraTexture ;
public GameObject bandeira;
private MeshRenderer MeshBandeira;
public float spd = 1f;
public GameObject Aqui;
public GameObject[] balao;
private GameObject novoBalao;
public Texture[] balaoTexture;
private int idBalaoTexture;
private MeshRenderer meshBalao;
private Rigidbody rb;
private GameObject guia;
public bool conectado = true;
//public GameObject bandeira;


void Start()
{
        GameObject fogos = GameObject.FindWithTag("fogo");
         // fogos.SetActive(false);
        rb = GetComponent<Rigidbody>();
}
public void update()
{

http://novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}

    public void InstanciarBalao(int idBalao)
    {
        novoBalao = Instantiate(balao[idBalao], new Vector3(Aqui.transform.position.x, Aqui.transform.position.y + 15, Aqui.transform.position.z), balao[idBalao].transform.rotation);
        meshBalao = novoBalao.GetComponent<MeshRenderer>();
        idBalaoTexture = 0;
        meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
    }

    public void instanciarBandeira(int idBandeira )
    { 

GameObject newFlag = Instantiate(bandeira, Vector3.zero, bandeira.transform.rotation, novoBalao.transform);  
newFlag.transform.localPosition = new Vector3(0,0, -5f);
 MeshBandeira = bandeira.GetComponent<MeshRenderer>();
 idBandeiraTexture = 0;
 MeshBandeira.sharedMaterial.mainTexture = bandeiraTexture[idBandeiraTexture];

    }
public void mudarCorBalao()
{
idBalaoTexture++;
if (idBalaoTexture >= balaoTexture.Length) { idBalaoTexture = 0; }
meshBalao.material.mainTexture = balaoTexture[idBalaoTexture];
}
public void subirBalao()
{
novoBalao.transform.Translate(0, -0.05f * Time.deltaTime, 0.1f);
}
public void liberarBalao()
{

guia = novoBalao.transform.Find("GUIA").gameObject;
guia.SetActive(false);
rb = novoBalao.GetComponent<Rigidbody>();
rb.isKinematic = false;
 GameObject fogos =  GameObject.FindWithTag("fogo");
        http://fogos.SetActive(true);

}
    public void ChangeFlagTexture(int bandeira) //Funcao mudar a textura da bandeira
    {
        idBandeiraTexture++; //O index aumenta para mudar para a proxima textura
        if (idBandeiraTexture >= bandeiraTexture.Length) { idBandeiraTexture = 0; } //O index reseta caso passe do tamanho da array
        // buttonTextureFlag.transform.GetChild(0).GetComponent<Image>().sprite = viewTextureButton[idFlagTexture]; //Pega a imagem do botao que mostra em que textura da bandeira esta (visualizador) e modifica de acordo com o index da textura
        MeshBandeira.sharedMaterial.mainTexture = bandeiraTexture[idBandeiraTexture]; //Modifica a textura da bandeira
    }
}

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sex Maio 28, 2021 6:32 pm

Acontece que voce não está alterando a mesh da nova bandeira instanciada, voce está alterando a mesh do prefab da bandeira, que cria as novas bandeiras e é por isso que voce teve que usar o sharedMaterial, por estar tentando alterar um prefab. Na linha
Código:
MeshBandeira = bandeira.GetComponent<MeshRenderer>(); //voce utiliza o bandeira.GetComponent<MeshRenderer>();


tente fazer assim:
Código:
MeshBandeira = newFlag.GetComponent<MeshRenderer>();


assim voce estará pegando o material da nova bandeira.
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sab Maio 29, 2021 8:09 am

@Pokedlg escreveu:Acontece que voce não está alterando a mesh da nova bandeira instanciada, voce está alterando a mesh do prefab da bandeira, que cria as novas bandeiras e é por isso que voce teve que usar o sharedMaterial, por estar tentando alterar um prefab. Na linha
Código:
MeshBandeira = bandeira.GetComponent<MeshRenderer>(); //voce utiliza o bandeira.GetComponent<MeshRenderer>();


tente fazer assim:
Código:
MeshBandeira = newFlag.GetComponent<MeshRenderer>();


assim voce estará pegando o material da nova bandeira.

b dia a bandeira e meu objeto da bandeira  como se fosse newflag eu so coloquei esse nome p ficar mas facil !

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sab Maio 29, 2021 8:13 am

@capim22 escreveu:
@Pokedlg escreveu:Acontece que voce não está alterando a mesh da nova bandeira instanciada, voce está alterando a mesh do prefab da bandeira, que cria as novas bandeiras e é por isso que voce teve que usar o sharedMaterial, por estar tentando alterar um prefab. Na linha
Código:
MeshBandeira = bandeira.GetComponent<MeshRenderer>(); //voce utiliza o bandeira.GetComponent<MeshRenderer>();


tente fazer assim:
Código:
MeshBandeira = newFlag.GetComponent<MeshRenderer>();

Bom dia resolvido certissimo obg por tda ajuda n sei como agradecer por td seu trabalho muito obg msm sucesso sempre ae!!!!!! Smile Smile
RESOLVIDO!

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por capim22 Sab Maio 29, 2021 8:29 am

@capim22 escreveu:
@capim22 escreveu:
@Pokedlg escreveu:Acontece que voce não está alterando a mesh da nova bandeira instanciada, voce está alterando a mesh do prefab da bandeira, que cria as novas bandeiras e é por isso que voce teve que usar o sharedMaterial, por estar tentando alterar um prefab. Na linha
Código:
MeshBandeira = bandeira.GetComponent<MeshRenderer>(); //voce utiliza o bandeira.GetComponent<MeshRenderer>();


tente fazer assim:
Código:
MeshBandeira = newFlag.GetComponent<MeshRenderer>();

Bom dia resolvido certissimo obg por tda ajuda n sei como agradecer por td seu trabalho muito obg msm sucesso sempre ae!!!!!! Smile Smile
RESOLVIDO!

So um extra aqui sabe me dizer pq n consigo usar o skinned agora?

MeshBandeira = newFlag.GetComponent<SkinnedMeshRenderer>(); da erro com skinned irei usar o cloth! sabe pq?

capim22
Avançado
Avançado

PONTOS : 726
REPUTAÇÃO : 9
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! WvDYdlf

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi!

Mensagem por Pokedlg Sab Maio 29, 2021 12:10 pm

Bom dia, Denada!! Smile Sucesso para vc também! Voce alterou a variavel MeshBandeira que era MeshRenderer e tem que ser SkinnedMeshRenderer? A variavel tem que ficar assim:
Código:
private SkinnedMeshRenderer MeshBandeira;
Pokedlg
Pokedlg
ProgramadorMaster

Masculino PONTOS : 978
REPUTAÇÃO : 157
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras : [RESOLVIDO] Instanciar obj filho que muda textura com botaoUIi! Aad8pUi

Voltar ao Topo Ir em baixo

Voltar ao Topo


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