Trabalhando com variáveis
1. O que são variáveis?
Variáveis são estruturas que são utilizadas para armazenar um valor de um determinado tipo na memória do computador.
Estrutura de memória.
Variável | Tipo | Valor |
---|---|---|
iSoma | Integer | 0 |
fValor | Float | 6.5 |
tName | String | “Gandalf” |
bRunnig | Boolean | false |
vLista | FVector | (1,2,4) |
Tabela 1: Variáveis e seus tipos de dados.
Abaixo um exemplo em C++:
// Variável do tipo inteiro
int iSoma = 0;
// Variável do tipo ponto flutuante
float fValor = 6.5;
2. Variáveis no Unreal Engine
Variáveis no Unreal Engine são propriedades que contêm um valor ou fazem referência a um objeto ou ator no mundo. Essas propriedades podem ser acessíveis internamente ao Blueprint que as contém, ou podem ser tornadas acessíveis externamente para que seus valores possam ser modificados por designers que trabalham com instâncias do Blueprint colocadas em um nível.
2.1. Tipos de Variáveis
Para armazenar qualquer informação na memória devemos definir um tipo de dados primitivo ou mesmo uma estrutura de dados, a seguir alguns tipos de dados:
-
Boolean
- Armazena valores falso ou verdadeiro (true e false).bool VariavelBoolean; VariavelBoolean = true;
-
Integer
- Valores inteiros entre −2.147.483.648 e 2.147.483.647int32 VariavelInt; VariavelInt = 1;
Utilize int32, uint8, uint32 para representar números inteiros.
-
Float
- Valores com casas decimais tal como 0,0553, 101,2887 e -78,322 .float VariavelFloat; VariavelFloat = 2.4;
-
String
- Grupo de caracteres alfanuméricos.FString VariavelString ; VariavelString = TEXT("Alo mundo!!");
2.2. Declarando variáveis com Blueprint
Declarando variáveis informamos ao computador que estamos reservando um espaço de memória temporário.
Observe que a propriedade Category
agrupa as variáveis por uma categoria.
2.3. Declarando variáveis com C++
int32 Count;
Informação: As variáveis que serão manipuladas por Blueprints ou pelo Editor Viewport, devem ser expostas para essa finalidade usando a macro UPROPERTY.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Parâmetros")
int32 iLife = 10;
3. Métodos Get e Set
Para acessar o conteúdo das variáveis utilizamos os métodos Get
e Set
, onde:
Get
: Obtém o valor de uma variável.
Set
: Atualiza o valor da variável.
3.1. Métodos Get e Set Blueprint
BeginPlay
- Ao iniciar o jogo a lista de comandos conectados a estes nó deve ser acionado.
Print String
- Escreve um texto na cena do jogo.
Add +
- Variáveis numéricas podem ser manipuladas com operadores matemáticos.
Converts
- Converte tipos de variáveis, neste caso converte um valor do tipo integer
em um do tipo String
.
3.2. Métodos Get e Set em C++
Arquivo Header.
// MyHero.h
UPROPERTY()
virtual void BeginPlay() override;
Arquivo de implementação.
// Myhero.cpp
void AMyHeroClass::BeginPlay()
{
Super::BeginPlay();
int32 iLifeLocal = 5;
float fSpeed = 3.7f;
FString fsName = TEXT("O nome do personagem é Nostromo");
iLifeLocal = iLifeLocal + iLife;
// iLife é uma variável global
UE_LOG(LogTemp, Warning, TEXT("O resultado é =, %d %f %s"), iLife, fSpeed, *fsName );
}
4. Tratamento e armazenamento de texto no Unreal Engine
No Unreal Engine são definidos alguns tipos de dados para manipulação e armazenamento de caracteres alfanuméricos, entre elas estão os tipos de variáveis a seguir.
Variável | Tamanho | Considerações |
---|---|---|
Text |
40 Bytes | Podemos adicionar opções avançadas como exemplo String Table , ideal para textos longos que podem variar conforme a lingua definida pelo jogador. |
String |
16 Bytes | Armazenamento e consumo de memória mediano |
Name |
8 Bytes | Cadeias de caracteres curtas que ocupam pouca memória. |
Tabela 2: Variáveis do tipo TEXT
Podemos realizar as seguintes operações em strings
:
-
Atribuir o valor de uma
string
para outra; -
Acessar caracteres individualmente;
-
Adicionar uma
string
no final de outra; -
Concatenar
strings
; -
Procurar uma determinada letra ou Substring dentro da
string
.
4.1. Strings em Blueprint
4.2. String em C++
Arquivo header.
// myHero.h
UPROPERTY()
virtual void BeginPlay() override;
UPROPERTY()
FString NomeCharacter;
UPROPERTY()
FString ClassCharacter;
Arquivo de implementação.
// myHero.cpp
void AMyHeroClass::BeginPlay()
{
Super::BeginPlay();
FString fsMessage = TEXT("Procurando a classe do personagem");
FString fsResultado;
fsResultado.append("O nome é ",*NomeCharacter)
// ou
fsResultado =TEXT("O nome é ");
fsResultado += *NomeCharacter;
UE_LOG(LogTemp, Warning, TEXT("O resultado é =, %s"), *fsResultado );
// Procurando uma Substring
if (fsMessage.Contains("class"))
{
UE_LOG(LogTemp, Warning, TEXT("Encontrei!!"));
}
else
UE_LOG(LogTemp, Warning, TEXT("Não encontrei"));
}
4.2.1. Concatenando textos usando a função Append
A função Append
concatena duas ou mais strings
, passamos como parâmetros os textos que gostaríamos de concatenar e tendo como resultado um novo texto contendo os dois textos.
FString sTexto = TEXT("Alo mundo...");
sTexto.append("Cruel");
// Resultado: Alo mundo...Cruel
4.2.2. Procurando texto dentro de uma string em Blueprint
A função Contains
procura uma sequencia de caracteres dentro de uma string
, passamos os seguintes parâmetros para a função.
Search In
- Texto passado como parâmetro.Substring
- Texto que deve ser localizado.Use Case
- Diferencia maiúsculas e minúsculas.Search from end
- Inicia a busca pelo fim do texto.
4.2.3. Procurando texto com C++
FString sTexto = TEXT("Procurando o texto escondido.");
if (sTexto.Contains(TEXT("texto")))
{
return true;
}
else
return false;
// Resultado: Alo mundo...Cruel
5. Variáveis do tipo numéricas Integer e Float
Valores numéricos utilizam operadores matemáticos para a sua manutenção, como veremos a seguir.
5.1. Inteiro em Blueprint
5.2. Inteiro em C++
void AMyCharacterClass::BeginPlay()
{
Super::BeginPlay();
Float fStrength = 10;
int32 iLife = 0;
iLife = int(fStrength / 2);
}
-
(+) - soma;
-
(*) - Multiplicação;
-
(/) - Divisão.
6. Armazenando valores lógicos com Boolean
Variáveis Boolean armazenam dois valores : falso false
ou verdadeiro true
.
7. Controle de acesso a variáveis
Como especificar quais variáveis de um objeto um usuário pode acessar e quais estão fora dos limites? Usando os especificadores de controle de acesso público e privado.
7.1. Variáveis Privadas
Variáveis privadas só podem ser acessadas por membros da mesma classe.
Variavel private usando Blueprint.
Variáveis Privadas em C++.
private:
bool Running = false;
7.2. Variáveis Públicas
Para permitir que uma variável seja modificada de fora de seu módulos, torne-a pública.
Variavel públicas em Blueprint.
Variáveis Públicas com C++
public:
float Damage;
UPROPERTY(BlueprintCallable, Category="Player")
bool IsRunning;