quarta-feira, 12 de agosto de 2015

Usando estruturas em Blueprints

Neste artigo vamos conhecer um pouco mais sobre "estrutura" (struct). Já usamos diversas estruturas em nossos Blueprints sem sabermos o que elas são realmente.

De uma forma simplificada, um Blueprint é composto por "Dados", "Ações" e "Componentes". Entretanto, as vezes precisamos apenas reunir em um único lugar diversas variáveis relacionadas. Ao invés de criar um Blueprint contendo apenas "Dados", podemos criar uma estrutura.



Um exemplo de estrutura muito utilizado é o Vetor. Um Vetor é um estrutura que contém três variáveis do tipo "float" (fracionário) com os nomes X, Y e Z. Nos próximos artigos vamos entender melhor o conceito matemático de um Vetor.

Abra um Blueprint e no EventGraph adicione a função "GetActorLocation". A variável "Location" é um Vetor. Clique com o botão direito no "Return Value" e escolha a opção "Split Struct Pin":


Esta opção irá criar um pino de saída para cada elemento da estrutura:


As variáveis que fazem parte de uma estrutura podem ser de tipos diferentes. Também podemos ter estruturas que são formadas por outras estruturas. Um exemplo é a estrutura "Transform" que possui três variáveis que são estruturas. 

As variáveis "Location" e "Scale" são do tipo "Vector" e a variável "Rotation" é do tipo "Rotator" que também é uma estrutura. A imagem abaixo mostra a função "GetActorTransform" em seu formato normal e com a estrutura separada:


Podemos até separar cada uma das estruturas que fazem parte do "Transform", o resultado ficaria assim:


Para criar uma nova estrutura, clique no botão "Add New" do Content Browser, categoria "Blueprints", opção "Structure" (Estrutura):


Coloque o nome de "ItemStruct" e dê dois cliques na estrutura para editar o seu conteúdo. Clique no botão "New Variable" (nova variável) para adicionar variáveis à estrutura. A imagem abaixo mostra uma estrutura com três variáveis de tipos diferentes.

Clique para aumentar

No lado direito é possível definir os valores padrões das variáveis. Esta estrutura que foi criada será usada como um novo tipo de variável.

Crie uma nova variável em algum Blueprint. Coloque o nome de "Inventory" (inventário), o tipo é "ItemStruct". Clique no ícone ao lado do tipo, para que esta variável seja um Array. Marque a opção "Editable".


Compile o Blueprint. Na categoria "Default Value" da variável você pode adicionar elementos no Array. Cada elemento contém as variáveis definidas na estrutura:


Quando uma estrutura é criada, são adicionadas as Ações  "Break" e "Make" desta estrutura para serem usadas no Blueprint. A Ação "Break" recebe um estrutura como entrada e separa seus elementos. A Ação "Make" recebe como entrada os elementos separados e cria uma nova estrutura. A imagem abaixo mostra as Ações  "Break" e "Make" da estrutura "ItemStruct" que criamos:


A imagem abaixo mostra um exemplo de uso das Ações "Break" e "Make". Ao pressionar a barra de espaço, é modificado apenas o valor Z da posição do Ator que recebe o valor 0. Os valores X e Y são preservados.

Clique para aumentar