Botão UI que troca a cor dos objetos
3 participantes
Página 1 de 1
Botão UI que troca a cor dos objetos
Eu estou precisando de um Botão UI que troca a cor dos objetos.
Mas não consigo encontrar nenhum tutorial que ensina isso.
Alguém saberia me indicar algo?
Mas não consigo encontrar nenhum tutorial que ensina isso.
Alguém saberia me indicar algo?
Re: Botão UI que troca a cor dos objetos
Meu caro iniciante, tu não precisa especificamente de um tutorial que ensine a criar um botão que troque a cor dos objetos.
Tu precisa de um tutorial que ensina a usar os botões e outro que ensine a trocar a cor dos objetos
Depois é só juntar o que aprendeu nos dois.
Tu precisa de um tutorial que ensina a usar os botões e outro que ensine a trocar a cor dos objetos
Depois é só juntar o que aprendeu nos dois.
Re: Botão UI que troca a cor dos objetos
Cara eu ja tentei fazer isso mas não funciona.dutrabr100 escreveu:Meu caro iniciante, tu não precisa especificamente de um tutorial que ensine a criar um botão que troque a cor dos objetos.
Tu precisa de um tutorial que ensina a usar os botões e outro que ensine a trocar a cor dos objetos
Depois é só juntar o que aprendeu nos dois.
Pois não é a mesma coisa botão é natal e objeto é objeto.
E os códigos são diferentes.
Eu preciso de algo que faça uma ponte entre esses 2.
Re: Botão UI que troca a cor dos objetos
Depende de que tipo de objeto voce quer alterar a cor, se é um sprite, ou um modelo 3d ou elementos UI... Para cada um desses muda, por exemplo se for:
Obs: Vou explicando as funções do código ao decorrer do script.
Sprite 2D
Caso você esteja querendo alterar a cor de um sprite 2D, voce deverá alterar a cor do SpriteRenderer, que é o componente responsável por renderizar o sprite, e juntamente dar cor ao sprite. Porém, tem um pequeno problema em dar cor a sprites, acontece que ele pega a cor original e mescla com a cor selecionada, tendo como padrão o branco. Para entender melhor, se seu sprite é uma esfera vermelha, (já padrão, não alterada na unity, ou seja voce desenhou ela já vermelha), ao colocar na unity, a cor do SpriteRenderer será setado como branca, padrão e se voce alterar para azul, a esfera posteriormente se tornará roxa, pois mesclou as cores entendeu...
Enfim vamos para a prática:
3D Model
Modelos e formas 3d utilizam o material para sua coloração, então em vez de utilizar o SpriteRenderer como anteriormente, voce utilizaria o material, voce fazer isso de algumas formas, como:
Porém voce pode fazer isso através do GameObject, em vez de linkar o material, voce pode pegar o material do GameObject utilizando um GetComponent<Renderer>():
Elementos UI
Diferente dos 2 mencionados anteriormente (não muito, é o mesmo conceito), os elementos UI (Botões, Imagens, Sliders, Barras, Texts...) utilizam o component Image para definir sua cor, então voce pode fazer a mesma coisa, linkar direto a imagem, ou utilizar um GetComponent<Image>() linkando o elemento UI ou GameObject;
E utilizando um GameObject:
Obs: Vou explicando as funções do código ao decorrer do script.
Sprite 2D
Caso você esteja querendo alterar a cor de um sprite 2D, voce deverá alterar a cor do SpriteRenderer, que é o componente responsável por renderizar o sprite, e juntamente dar cor ao sprite. Porém, tem um pequeno problema em dar cor a sprites, acontece que ele pega a cor original e mescla com a cor selecionada, tendo como padrão o branco. Para entender melhor, se seu sprite é uma esfera vermelha, (já padrão, não alterada na unity, ou seja voce desenhou ela já vermelha), ao colocar na unity, a cor do SpriteRenderer será setado como branca, padrão e se voce alterar para azul, a esfera posteriormente se tornará roxa, pois mesclou as cores entendeu...
Enfim vamos para a prática:
- Código:
public SpriteRenderer spriteRenderer; //linka o sprite que voce deseja alterar a cor
//Na void de OnClick para o botao
spriteRenderer.color = Color.blue; // altera a cor do spriteRender, utilizado no exemplo o azul
3D Model
Modelos e formas 3d utilizam o material para sua coloração, então em vez de utilizar o SpriteRenderer como anteriormente, voce utilizaria o material, voce fazer isso de algumas formas, como:
- Código:
//Linkar direto o material utilizado pelo GameObject alterando sua cor
public Material material; //linka o material utilizado pelo gameobject que voce deseja alterar a cor
//Na void de OnClick para o botao
material.color = Color.red; //e entao muda a cor do material do seu objeto, utilizado no exemplo para vermelho
Porém voce pode fazer isso através do GameObject, em vez de linkar o material, voce pode pegar o material do GameObject utilizando um GetComponent<Renderer>():
- Código:
public GameObject objetoPraMudarCor; //linka o GameObject que voce quer mudar a cor
//Na void de OnClick para o botao
Material mat = objetoPraMudarCor.GetComponent<Renderer>().material; //pega o material presente no objeto
mat.color = Color.green; //muda sua cor, utilizando no exemplo para verde
Elementos UI
Diferente dos 2 mencionados anteriormente (não muito, é o mesmo conceito), os elementos UI (Botões, Imagens, Sliders, Barras, Texts...) utilizam o component Image para definir sua cor, então voce pode fazer a mesma coisa, linkar direto a imagem, ou utilizar um GetComponent<Image>() linkando o elemento UI ou GameObject;
- Código:
public Image objectImage; //linka o objeto (button, slider, text, image, etc) q queira mudar a cor
//Na void de OnClick para o botao
objectImage.color = Color.yellow; //muda sua cor, como foi feita anteriormente, no exemplo foi alterado para amarelo
E utilizando um GameObject:
- Código:
public GameObject objeto; //linka o GameObject, como (button, slider, text, image, etc) q queira mudar a cor
//Na void de OnClick para o botao
Image img = objeto.GetComponent<Image>();
img.color = Color.black; //muda a cor do objeto, utilizado preto no exemplo
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Botão UI que troca a cor dos objetos
Obrigado pela explicação.Pokedlg escreveu:Depende de que tipo de objeto voce quer alterar a cor, se é um sprite, ou um modelo 3d ou elementos UI... Para cada um desses muda, por exemplo se for:
Obs: Vou explicando as funções do código ao decorrer do script.
Sprite 2D
Caso você esteja querendo alterar a cor de um sprite 2D, voce deverá alterar a cor do SpriteRenderer, que é o componente responsável por renderizar o sprite, e juntamente dar cor ao sprite. Porém, tem um pequeno problema em dar cor a sprites, acontece que ele pega a cor original e mescla com a cor selecionada, tendo como padrão o branco. Para entender melhor, se seu sprite é uma esfera vermelha, (já padrão, não alterada na unity, ou seja voce desenhou ela já vermelha), ao colocar na unity, a cor do SpriteRenderer será setado como branca, padrão e se voce alterar para azul, a esfera posteriormente se tornará roxa, pois mesclou as cores entendeu...
Enfim vamos para a prática:
- Código:
public SpriteRenderer spriteRenderer; //linka o sprite que voce deseja alterar a cor
//Na void de OnClick para o botao
spriteRenderer.color = Color.blue; // altera a cor do spriteRender, utilizado no exemplo o azul
3D Model
Modelos e formas 3d utilizam o material para sua coloração, então em vez de utilizar o SpriteRenderer como anteriormente, voce utilizaria o material, voce fazer isso de algumas formas, como:
- Código:
//Linkar direto o material utilizado pelo GameObject alterando sua cor
public Material material; //linka o material utilizado pelo gameobject que voce deseja alterar a cor
//Na void de OnClick para o botao
material.color = Color.red; //e entao muda a cor do material do seu objeto, utilizado no exemplo para vermelho
Porém voce pode fazer isso através do GameObject, em vez de linkar o material, voce pode pegar o material do GameObject utilizando um GetComponent<Renderer>():
- Código:
public GameObject objetoPraMudarCor; //linka o GameObject que voce quer mudar a cor
//Na void de OnClick para o botao
Material mat = objetoPraMudarCor.GetComponent<Renderer>().material; //pega o material presente no objeto
mat.color = Color.green; //muda sua cor, utilizando no exemplo para verde
Elementos UI
Diferente dos 2 mencionados anteriormente (não muito, é o mesmo conceito), os elementos UI (Botões, Imagens, Sliders, Barras, Texts...) utilizam o component Image para definir sua cor, então voce pode fazer a mesma coisa, linkar direto a imagem, ou utilizar um GetComponent<Image>() linkando o elemento UI ou GameObject;
- Código:
public Image objectImage; //linka o objeto (button, slider, text, image, etc) q queira mudar a cor
//Na void de OnClick para o botao
objectImage.color = Color.yellow; //muda sua cor, como foi feita anteriormente, no exemplo foi alterado para amarelo
E utilizando um GameObject:
- Código:
public GameObject objeto; //linka o GameObject, como (button, slider, text, image, etc) q queira mudar a cor
//Na void de OnClick para o botao
Image img = objeto.GetComponent<Image>();
img.color = Color.black; //muda a cor do objeto, utilizado preto no exemplo
Tópicos semelhantes
» Tenho 3 objetos e queria trocá-los de lugar sem que ocupassem a mesma posição?
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Troca de Nivel
» Não troca de arma
» Troca de armas
» [RESLVIDO] Unity - "transform.SetParent()" em 2 objetos move outros objetos
» Troca de Nivel
» Não troca de arma
» Troca de armas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos