Objetos da interface
1. Lógica de programação do Widget Graph
A lógica de controle de ações dos botões e a inicialização está em Graph, onde encontramos alguns eventos já conhecidos como por exemplo Event Construct e Tick.
1.1. Event Construct para inicializar variáveis utilizadas no Widget
Para que o objeto menu tenha acesso a propriedades da classe do jogador vamos inicializar a uma variável local utilizando Event Construct.
Ao iniciar o Widget definimos uma variável Jogador do tipo BP_Hero para que possamos ter acesso as propriedades nome e vida por exemplo.
1.2. Botões e eventos (Button and Events)
Os elementos do tipo Button tem eventos relacionados na sua estrutura, como por exemplo: On Clicked, On Pressed e outros.
Vamos utilizar o evento OnClick para executar a função Open Level para carregar outro level do projeto. Deverá ser informado o nome do Level que queremos abrir.
1.3. Acionando o botão Sair para finalizar o jogo
Ao clicar no botão Sair vamos chamar a função Quit Game que finaliza do jogo.
2. Executando o menu
Neste passo vamos criar um Level vazio para executar o menu, quando o menu for chamado a tela inteira deve mudar.
Caso o Widget seja o menu principal que deverá ser chamado no início do jogo é necessário adicionar o mesmo em Level e inicialização
Vamos criar um Level Vazio Empty Level para funcionar como base do menu.
Em Open Level Blueprint vamos adicionar a lógica para criar um objeto do tipo BP_HUD_Demo e adicionar na tela com a função AddToViewPort.
3. Apresentando informações para o Jogador
Para este passo vamos implementar os seguintes elementos para apresentar informações para o jogador, como por exemplo a vida do personagem.
-
TextBlock- Para apresentar o nome do jogador; -
ProgressBar- Para apresentar a vida do jogador.
3.1. Fazendo a ligação do elemento da interface com uma função
Devemos conectar os elementos da interface com funções por meio de uma propriedade Bind.
3.2. Função do calculo de vida do jogador
Para calcular o valor da vida do jogador vamos implementar uma função, abaixo a lógica da função associada a elemento ProgressBar.
3.3. Função para pegar o nome do jogador
Podemos utilizar Variáveis estruturadas para manipulação das propriedades do jogador.
4. Organizando os objetos
A seguir vamos apresentar algumas implementações e organizaremos todos os objetos criados para controlar melhor a lógica de programação de cada elemento, considerando:
-
Separação da lógica de negócios e os visuais de sua IU;
-
Permite iteração rápida de layout e visuais;
-
Depuração eficaz da lógica de negócios;
-
Performance.
4.1. Criando o objeto SaveGame para salvar dados do jogo
Para exemplificar algumas funções do menu como por exemplo salvar dados do jogo vamos realizar as seguintes operações.
Vamos implementar um objeto BP_SaveGameDemo do tipo SaveGame, para isso utilizamos o menu de contexto e escolhemos Blueprint.
Adicionamos variáveis dentro do objeto para definir o que deve ser salvo, neste exemplo utilizaremos a variável JogadorInfo do tipo S_jogador que é uma variável to tipo Structure.
Nos próximos passos vamos criar o objeto BP_GameInstanceJogo do tipo GameInstance e adicionar os eventos customizados (Add custon event) a seguir.
4.2. Evento para apresentar o menu na tela
Implementamos um evento customizado para adicionar lógica dos eventos.
-
Show Mouse Cursor- Esta variável é uma propriedade dePlayerControllere Configurando para true o ponteiro do mouse deve aparecer na tela; -
Set Input Mode UI Only- Esta função determina que o controle de entrada de dados será somente peloWidget.
4.3. Evento para abrir um Level
Neste passo vamos adicionar um evento customizado ,add custom event, para carregar um level na cena.
-
Open Level- Função para abrir um Level do jogo. É necessário informar o nome do level no parâmetro Level Name; -
Set Input Mode Game Only- Esta função determina que o controle de entrada de dados será somente pelo jogo.
4.4. Salvando dados
Para salvar informações vamos utilizar a função Save Game to Slot.
-
Create Save Game Object- Cria um objeto do tipoBP_SaveGameDemo, definido anteriormente; -
Save Game to Slot- Salva os dados e cria umSlot NameSalvo1.
4.5. Evento para carregar dados
Para carregar dados salvos utilizamos a função Load Game from Slot passando como parâmetro o nome do slot.
-
Does Save Game Exist- Retorna verdadeiro se encontra um jogo salvo com o nome Salvo1 informado emSlot Name; -
Load Game from Slot- Carrega as variáveis salvas emSlot Name, neste caso Salvo1.
4.6. Voltando ao jogo
Vamos agora remover o menu ou objeto Widget da cena utilizando a função Remove from parent.
Remove from Parent- Remove o widget de seuWidgetpai. Se esteWidgetfoi adicionado à tela do jogador ou à janela de visualização, ele também será removido desses recipientes.
4.7. Iniciando Game Instance no Widget
No objeto BP_HUD_Demo vamos substituir ou adicionar a lógica dos botões, mas antes devemos inicializar a Game Instance.
4.8. Efetuando as chamadas das funções
No evento click dos botões vamos adicionar os eventos construídos dentro da Game Instance isolando a regra de negócios (dados e lógica e manipulação).
Repetimos esse processo para associar todos os eventos aos botões.