Desenvolvimento Notícias Unity

Desvendando o UI Toolkit da Unity: O que são UXML, USS e como dominar a estilização

Se você desenvolve jogos ou ferramentas na Unity, com certeza já teve que lidar com a criação de interfaces de usuário (UI). Por muito tempo, o UGUI (GameObject-based) e o IMGUI (via código) foram as ferramentas padrão. No entanto, a Unity introduziu o UI Toolkit, um sistema moderno inspirado fortemente nos padrões de desenvolvimento web (HTML e CSS).

O coração desse novo ecossistema é o UI Document. Neste artigo, vamos entender como ele funciona e explorar seus dois pilares fundamentais: o UXML e o USS, além de aprender como criar regras de estilização poderosas para os seus projetos.

O que é o UI Document?

O UI Document é um componente da Unity que serve como a “ponte” entre o seu layout de interface e a cena do jogo. Ele carrega um arquivo visual (UXML) e o renderiza na tela.

Ao contrário do UGUI, onde cada botão ou texto é um GameObject na sua hierarquia, o UI Toolkit organiza tudo em uma estrutura de árvore interna chamada Visual Tree. Isso melhora drasticamente a performance e mantém a sua hierarquia da cena limpa.

Os Dois Pilares: UXML e USS

Para criar interfaces com o UI Toolkit, nós separamos a estrutura da aparência. É aqui que entram o UXML e o USS.

1. UXML (User Interface Extensible Markup Language)

O UXML é o equivalente ao HTML do desenvolvimento web. Ele define a estrutura e a hierarquia da sua interface.

  • Ele armazena quais elementos existem na tela (Botões, Labels, Imagens, Containers).
  • Pode ser editado visualmente através do UI Builder na Unity ou diretamente via código (XML).

2. USS (Unity Style Sheets)

O USS é o equivalente ao CSS. Ele define a aparência dos elementos contidos no UXML.

  • Responsável por cores, fontes, margens, alinhamentos (Flexbox) e tamanhos.
  • A grande vantagem é a reutilização: você pode aplicar o mesmo estilo USS a dezenas de botões diferentes. Se precisar mudar a cor do botão do jogo inteiro, muda apenas em um arquivo USS.

Estilização no USS: Tipos de Regras que Você Pode Criar

Para aplicar estilos aos elementos da sua interface, o USS utiliza Seletores. Eles dizem à Unity quem deve receber aquela estilização. Abaixo, estão os tipos de regras mais importantes que você pode criar:

A. Seletores de Classe (Class Selectors)

É a forma mais comum e recomendada de estilizar. Você cria uma classe no USS e a atribui a quantos elementos quiser no UXML.

  • Sintaxe: Começa com um ponto (.).

CSS

/* No arquivo USS */
.botao-menu {
    background-color: #2196F3;
    border-radius: 5px;
    color: white;
    padding: 10px;
}

B. Seletores de Tipo (Type Selectors)

Afetam todos os elementos de um determinado tipo de componente na interface. Use com cuidado, pois ele redefine o padrão do componente.

  • Sintaxe: O próprio nome do componente.

CSS

/* Todos os botões da interface receberão esse estilo automaticamente */
Button {
    font-size: 18px;
    font-weight: bold;
}

C. Seletores de Nome/ID (Name Selectors)

Utilizado para estilizar um elemento único e específico da sua interface.

  • Sintaxe: Começa com a hashtag (#).

CSS

/* Afeta apenas o elemento que tem o nome "titulo-principal" */
#titulo-principal {
    font-size: 32px;
    color: #FFD700;
    unity-text-align: middle-center;
}

D. Pseudo-estados (Pseudo-states)

Permitem mudar o visual do elemento dependendo da interação do jogador (ex: passar o mouse por cima, clicar).

  • Sintaxe: :hover, :active, :checked, :focus.

CSS

/* Quando o mouse estiver sobre o botão */
.botao-menu:hover {
    background-color: #0B7BDA;
}

/* Quando o botão for clicado */
.botao-menu:active {
    background-color: #0056B3;
}

Regras de Associação e Herança no USS

Além dos seletores básicos, você pode criar regras combinadas para ter um controle muito mais refinado do seu layout:

  • Seletores Múltiplos: Aplica o mesmo estilo para regras diferentes separando por vírgula.CSS.botao-confirmar, .botao-cancelar { margin: 5px; }
  • Seletores de Descendência: Aplica o estilo a um elemento que está dentro de outro.CSS/* Aplica o estilo apenas em Labels que estão dentro de um container do tipo "Inventario" */ .inventario Label { color: #AAAAAA; }

Por que usar essa abordagem no seu fluxo de trabalho?

  1. Separação de Conceitos: Designers podem focar no arquivo USS (identidade visual) enquanto programadores focam na lógica em C# referenciando os elementos do UXML.
  2. Performance: Menos GameObjects na cena significa menos overhead de atualização da Unity, resultando em interfaces mais fluidas.
  3. Flexbox Nativo: O UI Toolkit utiliza o sistema de Layout Flexbox, tornando a criação de interfaces responsivas (que se adaptam a diferentes resoluções de tela) muito mais simples do que as antigas âncoras do UGUI.

Conclusão

O UI Document veio para profissionalizar a criação de interfaces na Unity. Entender a sinergia entre a estrutura do UXML e o poder de estilização do USS é um passo fundamental para qualquer desenvolvedor de jogos que deseja criar menus e HUDs otimizados, elegantes e fáceis de manter.

Danilo Filitto

Sou Mestre em Ciência da Computação pela Universidade Estadual de Maringá – UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná – UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista – UNOESTE.
Atuo na área acadêmica como professor desde 2006. Além de professor sou desenvolvedor de jogos, palestrante e mantenedor dos sites dfilitto e Make Indie Games.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 2.141 outros assinantes

Teoria e Prática

Anúncios

Aprenda a criar seus jogos com os melhores desenvolvedores de jogos

Dicas para quem quer começar a criar seus próprios jogos

Quer aprender a programar?