[RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
Pessoal, boa tarde.
Tenho um canvas, que terá dois menus. Gostaria de colocar em cada menu uma imagem de fundo diferente, é possível? De que forma eu posso fazer isso usando o mesmo canvas? Ou terei que criar um segundo canvas?
Agradeço desde já.
Abs
Tenho um canvas, que terá dois menus. Gostaria de colocar em cada menu uma imagem de fundo diferente, é possível? De que forma eu posso fazer isso usando o mesmo canvas? Ou terei que criar um segundo canvas?
Agradeço desde já.
Abs
kenau- Iniciante
- PONTOS : 2389
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
Meu workflow é o seguinte:
Utilizo um único Canvas contendo diferentes Panels para cada menu, assim cada um pode ser habilitado/desabilitado via script, ou até mesmo animado (deslizando para dentro da área visível da tela, por exemplo).
A estrutura do Canvas e seus submenus é a apresentada abaixo:
Dessa forma cada menu é representado por um Panel.
Recomendo que retire o sprite padrão que vem no Panel, pois ele é arredondado e acaba mostrando em suas bordas a cor do céu da Unity.
Essa foi a maneira mais simples que encontrei para fazer.
Só tome cuidado pois, dependendo do jogo, utilizar vários menus assim pode não ser o ideal, se seu jogo utiliza muito a UI, o recomendado é ter mais de um Canvas, um para elementos mais estáticos, e outro para elementos que variam muito conforme o tempo. Lembrando que isso é apenas em casos específicos onde ter muitos objetos em um um único canvas causa problemas, na maioria dos casos, o workflow que apresentei acima vai te suprir muito bem.
Utilizo um único Canvas contendo diferentes Panels para cada menu, assim cada um pode ser habilitado/desabilitado via script, ou até mesmo animado (deslizando para dentro da área visível da tela, por exemplo).
A estrutura do Canvas e seus submenus é a apresentada abaixo:
Dessa forma cada menu é representado por um Panel.
Recomendo que retire o sprite padrão que vem no Panel, pois ele é arredondado e acaba mostrando em suas bordas a cor do céu da Unity.
Essa foi a maneira mais simples que encontrei para fazer.
Só tome cuidado pois, dependendo do jogo, utilizar vários menus assim pode não ser o ideal, se seu jogo utiliza muito a UI, o recomendado é ter mais de um Canvas, um para elementos mais estáticos, e outro para elementos que variam muito conforme o tempo. Lembrando que isso é apenas em casos específicos onde ter muitos objetos em um um único canvas causa problemas, na maioria dos casos, o workflow que apresentei acima vai te suprir muito bem.
Isabela- Avançado
- PONTOS : 2837
REPUTAÇÃO : 260
Idade : 24
Respeito as regras :
Re: [RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
Obrigado Isah, mas dessa forma como devo colocar o script para chamar cada panel? É alguma função que devo criar com algum onLoad dentro e depois chamá-la dentro da void start ou da void Awake?
kenau- Iniciante
- PONTOS : 2389
REPUTAÇÃO : 2
Respeito as regras :
Re: [RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
Bom, você nem precisa de um script para fazer isso, basta usar o action click dos botões
Seria algo mais ou menos assim: Dentro do painel1 você tem um botão que chama o painel2, nesse botão você adiciona dois OnClick(), seta os dois painéis nos campos de gameobject, e altera a propriedade setActive diretamente pelo click.
Repita a operação no painel 2, de forma que ative o 1 e desative a si mesmo.
Ficaria similar a isso aqui:
Caso tenha dúvidas de como implementar, estou incluindo essa cena de teste no meu GDrive, caso queira baixar para dar uma olhada no funcionamento, é só clicar AQUI
Lembrando que por padrão, você já deixa um painel ativo, e um desativado. assim, quando você clicar no botão, quem está ativo é desativado, e quem estava desativado se torna ativo.
Seria algo mais ou menos assim: Dentro do painel1 você tem um botão que chama o painel2, nesse botão você adiciona dois OnClick(), seta os dois painéis nos campos de gameobject, e altera a propriedade setActive diretamente pelo click.
Repita a operação no painel 2, de forma que ative o 1 e desative a si mesmo.
Ficaria similar a isso aqui:
Caso tenha dúvidas de como implementar, estou incluindo essa cena de teste no meu GDrive, caso queira baixar para dar uma olhada no funcionamento, é só clicar AQUI
Lembrando que por padrão, você já deixa um painel ativo, e um desativado. assim, quando você clicar no botão, quem está ativo é desativado, e quem estava desativado se torna ativo.
Última edição por isah em Sex Jun 08, 2018 5:14 pm, editado 1 vez(es)
Isabela- Avançado
- PONTOS : 2837
REPUTAÇÃO : 260
Idade : 24
Respeito as regras :
Re: [RESOLVIDO]Colocar dois fundos diferentes em um mesmo canvas dependendo do menu carregado.
Valeu de novo Isah. Deu certinho, era isso mesmo que eu precisava.
kenau- Iniciante
- PONTOS : 2389
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» Como colocar dois backgrounds diferentes para dois canvas diferentes?
» [RESOLVIDO] Personagens diferentes no mesmo Animator Controller
» [RESOLVIDO]Spawnar mais de dois tipos de inimigos no mesmo Spawner
» [RESOLVIDO]TEM COMO COLOCAR UM OBJETO 3D NO CANVAS?
» Dois carros nao Spawnarem no mesmo lugar (Estilo GTA SAN)
» [RESOLVIDO] Personagens diferentes no mesmo Animator Controller
» [RESOLVIDO]Spawnar mais de dois tipos de inimigos no mesmo Spawner
» [RESOLVIDO]TEM COMO COLOCAR UM OBJETO 3D NO CANVAS?
» Dois carros nao Spawnarem no mesmo lugar (Estilo GTA SAN)
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos