Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 13 - Interface com o Usuário – HUD

1. Contando as Tentativas Restantes

1.2 Alterando a UI Através de um Script

Esse método, no entanto, precisa ter uma interface um pouco diferente. Nós precisaremos adicioná-lo ao delegate do SceneManager e, para isso, ele terá de receber como parâmetro duas cenas. Não detalharemos esse processo, mas a assinatura do método será:

E, então, precisaremos adicioná-lo ao SceneManager.activeSceneChanged. E depois removê-lo, no método OnDestroy(), que é o método chamado em um objeto quando ele deixa de existir. Com todas as alterações, o nosso código ficará como visto na Listagem 02.

Listagem 2 - Código do script Game Controller com alterações para criar callbacks de alteração de cena.
Fonte: Elaborada pelo autor.

Foram poucas as alterações feitas, mas elas foram bem importantes, então, falaremos um pouco sobre cada uma. A primeira delas inclui o método criado na lista de métodos a serem chamados pelo SceneManager quando uma nova cena for carregada. Por isso, somamos o método ao que já está lá, utilizando o operador +=.

Em seguida, adicionamos ao nosso script o método OnDestroy() para remover o método GetRobotsLeft da lista de métodos a serem chamados pelo SceneManager quando o GameControlle deixar de existir. Assim, economizamos processamento em nosso jogo.

Por fim, temos o método GetRobotsLeft em si, onde faremos as alterações de UI toda vez que um nível for reiniciado. Como na cena de GameOver não teremos qualquer alteração, começamos o método testando se o parâmetro newScene, que contém justamente a nova cena carregada é diferente de GameOver. Se for diferente, procuramos o objeto do tipo Text daquela cena, com o método FindObjectOfType, o qual conhecemos antes, e então alteramos o seu valor para “x “ + robotsLeft, que é a junção de “x(espaço)“ com a quantidade de tentativas restantes.

Assim, resolvemos dois problemas com um código só. Primeiramente, quando iniciarmos uma nova cena, o novo valor de robotsLeft já será automaticamente levado até a UI, sem qualquer atraso ou necessidade de outro código. Segundo, agora temos sempre a variável robotsLeftText atualizada e pronta para ser utilizada pelos métodos de Break() e LevelEnd(), quando necessário. Tudo certo! Execute o jogo e teste o novo resultado!

Discuta com seus colegas no encontro presencial ou nos fóruns da turma os resultados que temos até aqui em nosso jogo! Será uma oportunidade de compartilharmos nossos avanços e esclarecermos as dúvidas existentes! ;)

Versão 5.3 - Todos os Direitos reservados