Eventos, funções e macros
1. Entendo Métodos e funções em programação
Para entender melhor a estrutura de programação que representa a construção de eventos e funções vamos abordar alguns conceitos de programação orientada a objetos.
1.1. Programação Orientada a Objetos
Um método é um procedimento ou função em Conceitos de Programação Orientada a Objetos. Considerando que uma função é um grupo de código reutilizável que pode ser usado em qualquer parte do programa. Isso ajuda na necessidade de escrever o mesmo código repetidamente. Também ajuda os programadores a escrever códigos modulares.
1.2. Métodos
-
Um método também funciona da mesma forma que o da função;
-
Um método é definido dentro de uma classe. Por exemplo: main () em Java;
-
Um método pode ser privado, público ou protegido.
O método é invocado apenas por sua referência / objeto. Por exemplo: se a classe tem obj como um nome de objeto, o método é chamado por: obj.method ();
Um método é capaz de operar em dados que estão contidos na classe.
Cada objeto tem seu próprio método que está presente na classe.
Pessoa | |
---|---|
+ | eyesColor:enum |
+ | hairColor:enum |
+ | Walk() |
+ | Run() |
+ | Jump() |
+ | Crouch() |
1.3. Funções
Uma função é um bloco de instruções que recebe uma entrada específica, faz alguns cálculos e, finalmente, produz a saída;
Uma função é definida independentemente. Por exemplo: main () em C++;
Por padrão, uma função é pública;
Ele pode ser acessado em qualquer lugar em todo o programa;
É chamado pelo próprio nome;
Ele tem a capacidade de retornar valores, se necessário;
Se uma função for definida, ela será a mesma para todos os objetos criados.
#include <iostream>
static int multiply(int a, int b) {
return a * b;
}
int main() {
std::cout << multiply(2, 2) << std::endl;
std::cin.get();
}
2. O que são Eventos em Blueprint
Os eventos são nós chamados a partir do código do jogo para iniciar a execução de uma rede individual dentro do EventGraph
. Eles permitem que os Blueprints executem uma série de ações em resposta a certos eventos que ocorrem dentro do jogo, como quando o jogo começa, quando um nível é reiniciado ou quando um jogador sofre dano.
Os eventos podem ser acessados dentro do Blueprints para implementar novas funcionalidades ou para substituir ou aumentar a funcionalidade padrão. Qualquer número de eventos pode ser usado em um único EventGraph
; embora apenas um de cada tipo possa ser usado.
2.1. Evento de dano no personagem
-
CausaDano
é um evento customizado utilizando a opçãoAdd Custom Event
no menu de contexto dentro doEvent Graph
; -
Pertence a classe BP_Hero do tipo
Character
.
2.2. Evento e Métodos
Os métodos são procedimentos ou funções que realizam as ações próprias do objeto. Assim, os métodos são as ações que o objeto pode realizar. Tudo o que o objeto faz é através de seus métodos, pois é através dos seus métodos que um objeto se manifesta, através deles que o objeto interage com os outros objetos.
2.3. Exemplo C++
class Actor {
void BeginPlay();
void Tick();
void BeginOverlap();
void Identificar() delegate;
};
class ExemploEventos : public Actor {
};
void AProjeto::BeginPlay() {
Super::BeginPlay();
};
void AProjeto::DestruaMundoNerd(World* mundo ) {
destroy();
};
// Called every frame
void AProjeto::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
};
3. Funções no Unreal Engine
São mini programas com as características de alocação de memória, estruturas internas de código e variáveis locais.
Podem receber parâmetros externos e retornam algum valor para o programa que executou a chamada.
-
Tem seu próprio
Event Graph
; -
Funções não suportam o nó
Delay
ou eventos de temporização; -
Funções podem ter ser replicadas em jogos multiplayer;
-
Não aceitam eventos customizados.
3.1. Exemplo de uma função em C++
// Função com parâmetros
void CalculoIMC(float pPeso, float pAltura) {
// Variável local
float resultado;
resultado = (pAltura * pAltura) / pPeso;
return = resultado;
};
3.2. Exemplo de uma função Blueprint
3.3. Funções Puras
Na programação de computadores, uma função pura é uma função que possui as seguintes propriedades[1]:
-
Os valores de retorno da função são idênticos para argumentos idênticos (sem variação com variáveis estáticas locais, variáveis não locais, argumentos de referência mutáveis ou fluxos de entrada) e
-
O aplicativo de função não tem efeitos colaterais (nenhuma mutação de variáveis estáticas locais, variáveis não locais, argumentos de referência mutáveis ou fluxos de entrada/saída).
Abaixo alguns exemplos de funções puras em C++:
-
sin
- Retorna sempre o mesmo valor; -
strlen
- Retorna o tamanho de uma área de memória; -
max
- Retorna o maior de dois valores;
Exemplos de funções impuras usando variáveis static
[Classes de Armazenamento]:
// static1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void showstat( int curr ) {
static int nStatic; // Value of nStatic is retained
// between each function call
nStatic += curr;
cout << "nStatic is " << nStatic << endl;
}
int main() {
for ( int i = 0; i < 5; i++ )
showstat( i );
}
No exemplo acima o valor de nStatic
varia como uma variável não local.
nStatic is 0
nStatic is 1
nStatic is 3
nStatic is 6
“Funções puras têm uma desvantagem crucial. Eles não podem se comunicar com o mundo exterior. Porque funções para entrada e saída, funções para construir um estado ou funções para criar números aleatórios não podem ser puras…”
4. Macros
Blueprint Macros, ou Macros, são essencialmente iguais a gráficos de nós recolhidos. Eles têm um ponto de entrada e um ponto de saída designado por nós de túnel. Cada túnel pode ter qualquer número de pinos de execução ou de dados que são visíveis no nó da macro quando usados em outros Blueprints e gráficos.
-
São basicamente um modelo Template de código ou nós;
-
Não aceitam eventos customizados;
-
Não podem ser replicados em jogos multiplayer.
4.1. Exemplo de uma macro em C++
#define MIN(a,b) (((a)<(b)) ? a : b)
std::cout << "The minimum is " << MIN(42, 8) << endl;
4.2. Exemplo de uma macro em Blueprint
5. Collapse Nodes
Usado principalmente para organização de código, escondendo nós da estrutura principal.
-
Aceitam parâmetros de entrada e saída;
-
No menu de contexto do
Event Graph
acionamos a opçãoCollapse Nodes
; -
Vai ser criado um gráfico de eventos próprio.