Qual é a melhor maneira de desenhar “botões” personalizáveis em um videogame?
Pergunta
Estou procurando ideias sobre como desenhar um "botão" que pode ser modificado em um aplicativo de jogo.Se eu usar uma imagem não vetorial de sprite fixa para o plano de fundo do botão, não poderei dimensionar o botão facilmente.Se eu escrever um código para desenhar um botão redimensionável (como os botões do Windows são desenhados), o programador terá que se envolver - e isso dificultará o skinning.Outra opção é dividir o botão em 9 imagens menores (3x3) e esticá-las todas - como os cantos arredondados são feitos em HTML.
Existe outra maneira "mais fácil"?Qual é a melhor abordagem?
Solução
Se você realmente deseja fazer isso, a maneira de fazer isso é com coordenadas de textura.Assim como você faria um design de botão/painel extensível em HTML com uma tabela, basta definir as coordenadas UV para os cantos, a área extensível superior, a área extensível inferior, as áreas extensíveis laterais e depois o meio.
Para ver um exemplo disso sendo implementado em um mecanismo XNA (embora seja um mecanismo de código fechado), veja isto:http://www.flatredball.com/frb/docs/index.php?title=SpriteFrame_Tutorial
Outras dicas
Sim.Estou trabalhando em um Editor.É uma linguagem semelhante a XAML (ou semelhante a OpenLaszlo, se preferir) para XNA.Assim os botões podem ser redimensionados pelo editor.Os botões também podem ser redimensionados por uma folha de estilos.
Acho que você está certo ao dizer que é provável que todos os botões tenham o mesmo tamanho em um design real.Mas mesmo em um aplicativo de janela, às vezes é necessário deixar um botão mais largo para acomodar o texto.
Deveria ser possível com shaders.Você provavelmente teria que fazer pesquisas em texel, mas isso reduziria o número de triângulos em uma interface de usuário complexa.