User Interface
HUD (Heads-up Display) ou UI (Use Interface) é um objeto especial do Unreal Engine para apresentar informações sobrepostas na tela e interagir com o jogador.
Neste capítulo vamos apresentar formas de interação com o jogador e depois construir objetos os necessários.
1. Como interagir com o jogador?
Durante o tempo do jogo é necessário interagir com o jogador de diversas formas, informando status de jogo, personagem e até mesmo guias de missões. Geralmente são informações em formatado texto e imagens 2D que se sobrepõe a tela para informar o jogador.
De outra forma, o comunicação de ações globais do jogo como por exemplo iniciar uma missão, salvar o jogo, sair do jogo e gerenciamento de configuração são formas de interação jogo vs player que utilizam menus através de botões, caixas rolantes e outros componentes.
1.1. Menos é Melhor
Uma dica simples, segundo as boas práticas de IHC (Interface Homem Computador), é “Menos é melhor”, onde devemos apresentar somente o necessário para o jogador e deixar a maior parte da experiência do jogador para o Gameplay.
Para construir um menu do jogo com Unreal Engine vamos seguir os seguintes passos:
-
Crie uma pasta para organizar os arquivos:
Content\UI\ -
Crie um objeto blueprint
Widgetna pasta criada anteriormente.Content\UI\WBP_Menu -
Edite e organize os elementos visuais do
Widgete a lógica de programação. -
Crie um level vazio para servir como base do menu.
-
Utilizando
Open Level Blueprintpara ao iniciar o level,Begin Playimplemente a lógica para carregar o menu na cena.
Agora vamos apresentar informações do personagem na tela do jogador:
-
Crie um objeto blueprint
Widgetna pasta criada anteriormente.Content\UI\WBP_Character_info -
Edite e organize os elementos visuais do
Widgete a lógica de programação. -
Na lógica de construção do
Widgetadicione uma variável para ter acesso a classe Character do personagem. -
É possível apresentar o
Widgetquando o personagem é instancia na cena.
2. Implementando o Widget para o construir o menu do jogo
No Unreal Engine utilizamos um objeto com atributos e métodos próprios para o tratamento e organização de informação na interface do jogador, a classe de objetos Widget que vem acompanhado por um editor especial.
2.1. Criando o Widget
Utilizando o Context Menu escolha a opção User Interface/Widget Blueprint.
2.2. Usando o editor de de Widget
O editor de Widget é divido em :
Designerpara apresentação e manipulação de elementos visualmente.Graphpara inserir a lógica de ações utilizando Blueprint.
2.3. Hierarchy - Hierarquia de elementos
-
Observe que tem vários objetos alinhados hierarquicamente e que neste caso vão nos ajudar e organizar a tela, sendo a raiz da árvore o objeto
BP_HUD_demo; -
Os elementos
Canvas Panel,Horizontal Box,Vertical Box Grid Paneltem propriedades para alinhamento dos elementos hierarquicamente abaixo; -
Grid Panelestá hierarquicamente superior aoImage_968, isso significa que o texto deverá ser alinhado em relação aoGrid Panel;
2.4. Entendo alinhamento utilizando Anchors
Para gerenciar melhor o posicionamento de objetos no Widget Designer vamos entender o objeto Anchor (Âncora).
Observe os valores de Position X e Y são zero, isso nos diz que a texto esta totalmente alinhado a âncora.
Agora vamos dividir a âncora e alinhar o texto dentro das fronteiras da âncora.
Agora temos as propriedades Offset Left e Right com um valor que determina a posição do texto entre as fronteiras da âncora.
-
Size to Contentdetermina que o elemento se ajustara ao tamanho do conteúdo; -
Alignmentpermite alinhar o elemento com aAnchors, como por exemplo inserir os valores X = 0.5 e Y = 0.5 para centralizar o objeto com aAnchor.
2.5. Horizontal ou Vertical Box
Estes elementos são utilizados para organizar os objetos Horizontal ou verticalmente. Ao adicionar elementos hierarquicamente abaixo de um Vertical ou Horizontal box eles serão organizados um ao lado do outro.
Horizontal box- Alinhamento Horizontal dos elementos.
Vertical box - Alinhamento vertical dos elementos.
Nas propriedades do elemento dentro do Vertical Box selecione Size Fill para preencher todo espaço do painel.
2.6. Grid Panel
Como o nome anuncia, os elementos hierarquicamente agrupados abaixo do painel serão organizados em forma de um grid (matriz).
Grid Panel tem uma propriedade especial que determina qual o valor de preenchimento de cada coluna ou linha dentro do grid. O valor varia de 0 a 1, onde 0,5 é metade do espaço e 1 totalmente preenchido.
O elemento agrupado também terá as propriedades Row e Col preenchidas sinalizando qual a posição do elemento dentro do grid.