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 dePlayerController
e 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 Name
Salvo1.
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 seuWidget
pai. Se esteWidget
foi 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.