2 minuto(s) de leitura

1. O que são variáveis do tipo Structure?

Structure, são estruturas de dados também conhecidas como registros, permitem que um usuário combine itens de dados de (possivelmente) diferentes tipos de dados sob um único nome. Em outras palavras, é uma variável que contém outros variáveis de diferentes tipos.

Podem ser utilizadas para definir propriedades de um elemento do jogo como por exemplo os personagens.

2. Structure e Class

Em C++, uma estrutura é realmente a mesma coisa que uma Class, exceto por algumas diferenças sintáticas.

Por exemplo, Structs em C++ padronizam suas variáveis de membro como públicas por padrão, enquanto as classes têm variáveis privadas por padrão.

2.1. C++ Struct

struct Character {
    int velocidade;
    int forca;
    bool correndo;
};

2.2. C++ Class

class Character {
    int Velocidade;
    int Forca;
    bool Correndo;
};

2.3. C++ Struct Unreal

USTRUCT([Specifier, Specifier, ...])
struct FStructName
{
    GENERATED_BODY()

    int32 Velocidade;
    int32 Forca;

    UPROPERTY()
    bool Correndo;
};

2.4. C++ Class Unreal

UCLASS()
class YOURMODULE_API APlayerCharacter: public ACharacter
{
  GENERATED_BODY()
public:
  UFUNCTION(BlueprintCallable, Category="Player")
  bool EstaCorrendo();

private:
        bool Correndo = false;
        int32 Velocidade=100;
        int32 Forca = 100;
};

3. Criando variáveis do tipo Structure com Blueprint

Neste passo vamos criar o objeto SJogador do tipo Structure para exemplificar o uso das variáveis utilizando o menu de contexto Blueprints > Structure.

Figura: Menu de contexto Blueprints > Structure.
Cria o objeto do tipo Structure.

3.1. Definindo variáveis dentro da estrutura

A seguir vamos adicionar variáveis dentro do da estrutura criada.

Figura: Editor de Structure.
Podemos adicionar e salvar novos tipos de dados.
Nome Tipo Descrição
Nome Name Armazena o nome do jogador
Life Float Total de vida do jogador
Strength Float Total de força do jogador
Level Integer O Nível que o jogador se encontra
Image Texture2D/References Armazena imagem 2d que representa o jogador
Character Character/Class Armazena a classe de objeto do personagem do jogador

3.2. Acessando as variáveis

Para acessar as variáveis que estão dentro da objeto do tipo Structure vamos utilizar Break Structure.

Figura: Exemplo de Break Structure.
Usamos esse nó para acessar as variáveis dentro da estrutura.

3.3. Atualizando as variáveis

Quanto necessitamos atualizar as variáveis que estão contidas dentro de uma estrutura, podemos selecionar o variável e arrastar a conexão para abrir a lista de seleção de objetos e funções relacionados e selecionamos Set Members.

Cafegeek - Usando e atualizando variáveis do tipo Struct Para atualizar a variável usamos Set Members in. [Link]

Info - Variável SLights do tipo Struct;

Info.Status - Variável enum com os valores LightOn e LightOff;

Set Members in SLights - Função para atualização as variáveis membro de uma estrutura, SLights.

3.4. Exemplo do uso de variáveis Structure

Para exemplificar a utilização de variáveis Structure vamos implementar um level onde os elementos serão construídos dinamicamente, para tal vamos utilizar uma Array de objetos do tipo Point Light Component para que possam ser adicionados na cena no momento de construção do objeto.

3.4.1. Criando o objeto SControleLuzes

Figura: Exemplo do objeto SControleLuzes.

3.4.2. Lógica para construir os elementos na cena

1. Crie um level utilizando o modelo default;

2. Implemente um Blueprint Actor com o nome BP_ControleLuzes;

3. Adicionar as variáveis :

Luzes - Array de tipo Point Light Component;

ControLuzes - Array de tipo SControleLuzes;

Total_luzes : Integer.

4. Na construção do objeto (Construction Script) adicionamos elementos Point light component na cena e logo em seguida no array Luzes.

Figura: Lógica que adiciona os elementos em um array do mesmo tipo (PointLightComponent).

5. Ao terminar o primeiro loop reconstruímos o array de controle ControLuzes e o percorremos em conjunto com o array luzes para configurar as propriedades dos elementos.

Figura: Lógica que altara as propriedades dos objetos do array.

6. Adicione o elemento BP_ControleLuzes na cena para visualizar as luzes sendo construídas.