Aproveitando ao máximo o TextMesh Pro no Unity 2018

Quer você esteja trabalhando em um FPS, um jogo de quebra-cabeça ou uma experiência de VR , um dos aspectos que você precisa cuidar é a interface do usuário. Felizmente, em março de 2017, o TextMesh Pro se juntou à família Unity. Isso significa que deixar sua interface de usuário no Unity com uma ótima aparência ficou muito mais fácil e rápido!
Para aqueles que não acompanharam esses desenvolvimentos, o TextMesh Pro é um substituto para os componentes de texto padrão do Unity. Ele tem o mesmo desempenho (até mais, em alguns casos) e usa uma técnica de renderização completamente diferente chamada Signed Distance Field (SDF), usada originalmente pela Valve no Team Fortress 2. Além de ter o poder de fazer seu texto ficar ótimo sem muito esforço, o TextMesh Pro também oferece um controle muito mais avançado sobre ele, por meio de inspetor ou script. Neste post, vamos dar uma olhada em como aproveitar ao máximo essa ferramenta incrível!
Há dois motivos principais pelos quais é uma ótima ideia começar seus projetos usando o TextMesh Pro. Primeiro, melhorias visuais. Graças à renderização SDF, é fácil alterar a aparência do seu texto sem precisar recriar sua fonte. Cada componente do TextMesh Pro tem um material anexado que você pode ajustar para modificar o estilo do seu texto. Segundo, melhor controle. O componente TextMesh Pro inclui todas as variáveis que você pode encontrar no componente de texto comum, além de muito mais. E se isso não bastasse, saiba que o TextMesh Pro é usado atualmente por mais de um quarto de milhão de desenvolvedores ao redor do mundo!
Ao trabalhar com o texto padrão do Unity , você deve ter notado que às vezes esticar ou redimensionar o objeto faz com que ele pareça desfocado. Isso ocorre porque o texto não contém informações sobre como ficaria quando redimensionado e, portanto, o Unity precisa "improvisar" e tentar gerar os pixels ausentes rapidamente. Devido à técnica de renderização diferente que o TextMesh Pro usa, isso não é mais um problema. O SDF é baseado no princípio de renderizar um Font Atlas em alta resolução para que a fonte sempre tenha informações sobre como um caractere ficaria quando redimensionado.

Com o TextMesh Pro você pode importar qualquer arquivo de fonte e criar seu próprio recurso de fonte (Janela > TextMesh Pro > Criador de recursos de fonte). Isso permite que você escolha a resolução do Font Atlas (o que determinará a eficácia da renderização SDF para seu texto). Obviamente, quanto menor a resolução escolhida, mais rápido o Font Atlas será gerado.

Como a fonte tem informações sobre como ela ficaria em tamanhos diferentes, ela também pode reconstruir seu contorno e sombra projetada a partir do Font Atlas. Basta ajustar as propriedades do material e veja seu texto mudar completamente de aparência!
Como vimos, o TextMesh Pro oferece textos com ótima aparência. Mas qual o sentido de um texto bonito se você não tem controle sobre ele? O componente TextMesh Pro tem opções que permitem personalizar o tamanho da fonte, espaçamento, alinhamento, kerning ou habilitar o dimensionamento automático e ajustar seu texto em um contêiner. Os dois últimos, em particular, oferecem grande controle sobre o trabalho com diferentes plataformas ou idiomas, pois permitem que seu texto seja redimensionado automaticamente dependendo de um determinado contêiner de texto, sem a necessidade de nenhum script. No entanto, se você desejar alterar essas configurações em tempo de execução, poderá acessar todas as variáveis nos componentes do TextMesh Pro na API do TextMeshPro.
Para uma camada extra de personalização, você também pode adicionar o componente Ferramenta de Depuração de Informações de Texto ao seu objeto de texto para que você possa representar visualmente caracteres, palavras, links, linhas etc.

Se você quiser economizar tempo reformatando seu texto toda vez que inserir um cabeçalho, um título, uma citação etc., você pode configurar uma Folha de Estilo para qualquer finalidade específica. Um exemplo seria injetar uma decoração em um cabeçalho. Para criar uma folha de estilo, selecione Criar > TextMesh Pro > Folha de estilo. Você pode definir esse novo recurso como sua Folha de Estilo padrão em Editar > Configurações do Projeto > Configurações do TextMesh Pro.

Além de controlar a aparência do texto no inspetor ou em um script, você pode controlá-lo no próprio campo de texto. Se você estiver familiarizado com HTML ou XML, poderá personalizar a aparência do seu texto enquanto digita. Se ainda não estiver, leia o guia sobre como usar Rich Text com o TextMesh Pro) para começar! Isso é particularmente útil nos casos em que você deseja usar vários estilos, tamanhos e materiais no mesmo objeto de texto.

Outra maneira de deixar o TextMesh Pro com uma ótima aparência é aplicar um Surface Shader ao seu texto. Isso permitirá que a iluminação na cena afete o texto. No exemplo abaixo, alguns pontos de luz em tempo real estão se movendo pela cena e afetando o texto.

As propriedades do material oferecem a opção de personalizar configurações como Face, Contorno, Chanfro, Iluminação, BumpMap, EnvMap, Brilho e Depuração.
Depois de criar um material com o qual esteja satisfeito, você pode criar uma predefinição de material que poderemos reutilizar a qualquer momento, especificamente para o recurso de fonte que estamos usando. Podemos fazer isso clicando com o botão direito do mouse no nome do material e selecionando "Criar predefinição de material". Isso criará um recurso que podemos selecionar em nosso componente TextMesh Pro > Configurações de fonte > Predefinição de material.
Se você gerou um Font Atlas que não possui certos caracteres, o TextMesh Pro fará com que o caractere retorne ao glifo padrão sempre que for digitado. Você pode alterar esse glifo acessando Editar > Configurações do projeto > Configurações do TextMesh Pro. Como alternativa, você pode configurar um ou mais Font Assets aos quais o TextMesh Pro recorrerá caso o caractere não seja encontrado no Atlas principal. Para fins de otimização, faz sentido manter o Font Atlas principal em uma resolução mais alta, e todos os Atlas de fallback em uma resolução mais baixa.
Além disso, você pode usar as configurações do TextMesh Pro para configurar caminhos de recursos para fontes e materiais ou ativos de sprites. Ao usar Rich Text, você pode inserir um Sprite dependendo de qual estiver disponível no Sprite Asset principal definido nas Configurações. A maneira mais fácil de fazer isso é importar uma Sprite Sheet, cortá-la no Sprite Editor, clicar com o botão direito do mouse no ativo e selecionar Criar > TextMesh Pro > Sprite Asset. A partir deste novo recurso, você pode personalizar configurações como deslocamento ou pivô. Da mesma forma, você pode configurar uma série de Fallback Sprite Assets para recorrer caso um Sprite não seja encontrado nos Sprite Assets primários.

Em termos de desempenho, como já mencionamos, o TextMesh Pro funciona de forma semelhante ao texto padrão: ele ainda é renderizado em quads, então é tão eficiente quanto usar uma fonte bitmap. Também não há alocação de memória de tempo de execução: O TextMesh Pro só alocará espaço para os objetos de texto quando você pressionar play. Se você aumentar o número de caracteres em uma quantidade significativa, apenas uma realocação será feita; se você diminuir o número de caracteres, nenhuma realocação será feita, a menos que seja diminuída em pelo menos 256 caracteres. E em termos de melhorias, você pode obter melhores resultados para estilos como Contorno e Sombra projetada simplesmente por causa da técnica de renderização SDF usada pelo TextMesh Pro.
A maior parte do que foi mencionado neste blog está disponível como uma cena de exemplo quando você importa o TextMesh Pro para seu projeto (em Janela > Gerenciador de Pacotes > TextMesh Pro > Instalar a partir do Unity 2018.1 em diante). Recomendo fortemente que você dê uma olhada neles antes de começar a usar o TextMesh Pro, pois o conteúdo deles pode responder à maioria das suas perguntas. No entanto, se você quiser fornecer seu feedback ou ainda tiver alguma dúvida, sinta-se à vontade para fazê-lo por meio dos Fóruns.
