Aprendendo a programar jogos em Unity: representando graficamente recordes no menu inicial

Adicionaremos ao projeto um interessante indicador visual, que reage a mudanças no recorde atual de pontuação do jogador.

em 03/05/2026
Seja bem-vindo(a) ao GameDev: Aprendendo a programar jogos em Unity! Após realizarmos, em nosso encontro anterior, importantes ajustes às configurações de movimentação do labirinto e de seus componentes internos, realizaremos hoje os primeiros passos para a implementação de um recurso visual que reagirá aos recordes obtidos pelos jogadores durante nossa aventura médica.

Caso esta seja a primeira vez que você entra em contato com conteúdos de nossa série, sinta-se especialmente convidado a conhecer mais sobre as atividades de programação de jogos que estamos desenvolvendo periodicamente aqui no GameBlast.

Por meio do uso da ferramenta Unity, a cada encontro elaboramos e aplicamos melhorias e novas funcionalidades à games que construímos juntos a partir “do zero”. Trabalhando em projetos práticos de criação de jogos digitais, vamos aprendendo paulatinamente sobre como os pequenos e os grandes estúdios de desenvolvimento fazem para tirar do papel títulos de diferentes estilos gráficos e de gameplay.

A partir do primeiro texto da série, abordamos desde os passos mais elementares do processo, como os que envolvem a instalação e a configuração da ferramenta em nossos computadores, até as etapas em que, de fato, colocamos a “mão na massa” nos projetos pra valer, transformando objetivos e regras propostas em códigos e elementos concretos dentro dos jogos, fazendo com que eles tomem forma e funcionem exatamente da forma que planejamos.

O projeto em que estamos trabalhando no momento chama-se Consultório do Dr. Tratanildo. Trata-se de um puzzle ambientado em um consultório médico tridimensional, cujos aspectos de gameplay adotados prestam homenagem a clássicos dos arcades e dos videogames dos anos 1980 e 1990, como Pac-Man (Namco, 1980) e Dr. Mario (Nintendo, 1990).


Além do game atualmente em desenvolvimento, produzimos anteriormente outros dois jogos bidimensionais, Forest Ping Pong e Motorista da Pesada. Embora cada projeto desenvolvido tenha seu próprio escopo de funcionalidades, regras e elementos multimídia, muitos dos conceitos utilizados durante o desenvolvimento das obras anteriores são reaproveitados na construção dos próximos projetos. Vale muito a pena conferi-los por meio dos textos apresentados no índice disponibilizado no primeiro texto da série.

Nossa série é desenvolvida pensando em ajudar a quem quer criar seus próprios jogos mas ainda não sabe bem ao certo nem por onde começar. Portanto, não se acanhe caso não tenha experiências prévias em projetos de programação de jogos ou de sistemas em geral: todos os exemplos e técnicas apresentadas são explicadas de forma simples, por meio de exemplos, tendo sua aplicação nos projetos detalhada, de forma a permitir que você possa aplicá-los posteriormente em seus projetos pessoais.

Caso você tenha gostado da ideia de poder transformar suas ideias em jogos de verdade, não perca mais tempo e junte-se a nós em uma caminhada repleta de aprendizados, de novos conhecimentos e de muita diversão!

Exibindo o progresso do jogador

É comum observarmos em diferentes games formas variadas de se mostrar ao jogador a progressão histórica obtida durante as sessões anteriores de jogatina. Em alguns títulos costuma-se exibir a pontuação máxima (recorde) no menu inicial do jogo, em outros prefere-se representar o progresso pelo aparecimento de elementos gráficos na interface do game ou, até mesmo, pelo desbloqueio de elementos multimídia durante as fases.

A imagem a seguir ilustra duas formas com as quais o jogo Super Mario World: Super Mario Advance 2 (Nintendo, 2001) representa a evolução do jogador no menu inicial do game: por meio de estrelas, dispostas próximo aos logos do games da coletânea, e pela pontuação máxima obtida.


As possibilidades são inúmeras, e seria interessante experimentarmos em nosso game esse conceito também. Inspirado em uma das formas como o referido título do encanador bigodudo representa a evolução do jogador no game, elaboraremos um interessante contador na interface do menu inicial do jogo, representando o recorde obtido pelo jogador por pequenos corações a serem exibidos no canto superior direito da tela.

No encontro de hoje, estruturaremos a parte gráfica deste contador, ficando para o próximo encontro a codificação dos comportamentos dos elementos via script.

A barra dos corações

Vamos iniciar as intervenções no game para tirarmos do papel essa ideia, abrindo o projeto para edição. No Unity Hub, clique duas vezes sobre o item referente a ele. Na interface inicial do editor, na aba Project, abra a pasta AssetsScenes e, por fim, clique duas vezes no ícone da cena ConsultorioScene.

Na aba Hierarchy, localize o GameObject MenuInicial, subordinado a Canvas. Clique com o botão direito sobre o objeto e, no menu suspenso, selecione a opção Create Empty. Conceda o nome “RecordesCoracoes” ao novo GameObject; selecione-o e, via aba Inspector, realize sequencialmente as seguintes intervenções relacionadas aos valores dos parâmetros de seu componente Rect Transform:
  • Âncora: clique sobre o elemento e selecione a opção Top Right;
  • Pivot X = 1, Y  = 1;
  • Pos X = -50, Y = -100;
  • Width = 1200;
  • Height = 200.
Ainda com RecordesCoracoes em evidência, por meio do botão Add Component, adicione um componente de tipo Grid Layout Group ao objeto. Conceda os seguintes valores aos parâmetros do componente:
  • Cell Size X = 100, Y = 100;
  • Spacing X = 0, Y = 0;
  • Start Corner = Upper Right;
  • Start Axis Horizontal;
  • Child Alignment Middle Right;
  • Constraint Flexible.

Em seguida, retornando à aba Hierarchy, clique com o botão direito sobre RecordesCoracoes,  no menu suspenso selecione a opção UI e, em seguida, Image. Conceda o nome “CoracaoRef” ao GameObject recém-introduzido.

Selecione CoracaoRef e, via aba Inspector, note que não será necessário realizarmos intervenções em valores dos atributos de seu componente Rect Transform. Isso deve-se ao fato de termos configurado previamente o componente Grid Layout Group de seu superior hierárquico.

Ainda com CoracaoRef em evidência, altere os valores dos seguintes atributos de seu componente Image:
  • Source Image: clique sobre a caixa de seleção e escolha o sprite de nome “coracao”;
  • Color R = 255, G = 255, B = 255, A = 200;
  • Preserve Aspect = deixe a caixa de seleção marcada (true).
O novo elemento será representado em tela por um simpático coração semitransparente no canto superior da tela, conforme ilustração a seguir.

Como a geração dos corações em tela será realizada a partir da verificação do recorde atual, ocultaremos nosso “coração de referência”, selecionando-o na aba Hierarchy e, via aba Inspector, desabilitando-o, deixando a caixa de seleção ao lado de seu nome vazia.

Não se esqueça de salvar a cena (menu File, opção Save) e o projeto (menu File, opção Save Project) antes de fechar o Unity.

Próximos passos

É possível perceber que, encontro após encontro, nosso game vai tomando um rumo bem interessante, com diferentes funcionalidades que agregam cada vez mais à experiência do jogador, mesmo que, pare isso, seja necessário, em alguns casos específicos, reaproveitar elementos gráficos utilizados em outros momentos do game, como é o caso do sprite de coração, que ganhará uma “função extra” dentro do contexto de nossa aventura.

Em nosso próximo encontro, codificaremos o novo recurso implementado, por meio de intervenções no principal script controlador de nosso projeto.

Nosso próximo encontro será no dia 10 de maio. Até mais! Fique sempre ligado nas novidades do GameBlast!

Revisão: Ives Boitano
Siga o Blast nas Redes Sociais
Rodrigo Garcia Pontes
Entendo videogames como sendo uma expressão de arte e lazer e, também, como uma impactante ferramenta de educação. No momento, doutorando em Sistemas da Informação pela EACH-USP, desenvolvendo jogos e sistemas desde 2020. Se quiser bater um papo comigo, nas redes sociais procure por @RodrigoGPontes.
Este texto não representa a opinião do GameBlast. Somos uma comunidade de gamers aberta às visões e experiências de cada autor. Você pode compartilhar este conteúdo creditando o autor e veículo original (BY-SA 4.0).