O sistema de script visual de Blueprint da Unreal Engine (geralmente, chamado apenas de "Blueprints") é uma linguagem de programação visual que usa uma interface baseada em nós para criar funcionalidades de jogabilidade sem a necessidade de escrever código. Semelhante a uma linguagem de programação escrita, o sistema de Blueprints funciona com dados digitados como números, booleanos, matrizes e estruturas. A lógica flui por meio de fios de execução, o que significa que cada nó é executado apenas quando algo o instrui explicitamente a ser executado.
Com as classes de Blueprint, você pode combinar componentes físicos com comportamento em script. Por exemplo, um Blueprint poderia conter uma malha estática de moeda e um comportamento que faz com que quem está jogando junte a moeda quando a toca.
Assim como muitas linguagens de programação comuns, você pode usar o sistema para definir classes orientadas a objeto ou objetos na engine. Para programadores, a implementação C++ da Unreal Engine inclui marcação específica de Blueprint para que você possa criar sistemas de base que os membros designers podem estender.
Nesta visão geral, você aprenderá sobre os diferentes tipos de ativos de Blueprint e fará um tour por uma classe de Blueprint de amostra, onde você modificará certos elementos desse Blueprint e verá como essas alterações afetam esses atores de Blueprint no Editor de Níveis e durante a jogabilidade.
Tipos de Blueprint
Existem diferentes tipos de ativos de Blueprint, cada um com sua própria função. Quando você cria e salva um Blueprint, ele se torna um arquivo de ativo no seu pacote de conteúdo.
Classe de Blueprint
Uma classe de Blueprint, frequentemente abreviada como Blueprint, é um ativo que permite aos membros criadores de conteúdo adicionar facilmente funcionalidades sobre classes de jogabilidade existentes. Os blueprints são criados visualmente dentro do Unreal Editor, em vez de digitar código, e salvos como ativos em um pacote de conteúdo. Eles essencialmente definem uma nova classe ou tipo de ator, que pode então ser colocado em mapas como instâncias que se comportam como qualquer outro tipo de ator.
Uma classe de Blueprint é como uma receita que usa componentes, variáveis e script visual de Blueprint para descrever as propriedades e os comportamentos dos objetos no seu jogo. Você adiciona instâncias de classes de Blueprint ao seu nível.
Este é o tipo mais comum com que você trabalhará: uma classe de Blueprint, geralmente abreviada e chamada de Blueprint.
As classes de Blueprint podem ser compostas apenas por dados quando não contêm lógica de execução e apenas substituem variáveis ou componentes herdados de um Blueprint pai. Classes de Blueprint compostas apenas por dados são abertas em um editor compacto, mas são convertidas para um Editor de Blueprint completo se você adicionar nova lógica, gráficos ou outros elementos de código.
Consulte documentações adicionais em Classe de Blueprint.
Blueprint de nível
Todo nível tem um Level Blueprint (nível de Blueprint). Quando você cria um novo nível, a Unreal Engine automaticamente cria um Blueprint de nível para esse nível. Esse tipo de Blueprint atua como um gráfico de eventos global em todo o nível.
Blueprints de nível também fornecem um mecanismo de controle para a transmissão do nível e a cinematografia do Sequencer, bem como para vincular eventos a atores colocados dentro do nível.
Para abrir o Blueprint de um nível, use o menu Blueprint na barra de ferramentas principal do Editor de Níveis.
Consulte documentações adicionais em Level Blueprint.
Interface de Blueprint
Um ativo de Blueprint Interface (interface de Blueprint) é uma coleção de uma ou mais funções (apenas no nome, sem implementação), que pode ser adicionada a outros Blueprints. Todo Blueprint com uma interface adicionada deverá ter essas funções. As funções da interface podem receber funcionalidade em cada um dos Blueprints que a adicionaram. Esse é essencialmente o conceito de uma interface em programação geral, que permite que vários tipos diferentes de objetos compartilhem e sejam acessados por meio de uma interface comum. Em termos simples, as Interfaces de Blueprint permitem que diferentes Blueprints compartilhem e enviem dados entre si.
As Interfaces de Blueprint não podem:
Adicionar novas variáveis
Editar gráficos
Adicionar componentes
Consulte documentações adicionais em Blueprint Interface e Interface Quick Start Guide.
Bibliotecas de Blueprints
Você pode reutilizar a lógica criando funções e macros em ativos de "biblioteca" para que sejam acessíveis por todos os Blueprints do seu projeto.
Biblioteca de funções de Blueprint
Uma biblioteca de funções de Blueprint é um ativo de Blueprint que armazena uma coleção de funções reutilizáveis. Essas funções não estão vinculadas a um Blueprint ou ator específico. Em vez disso, elas são globalmente acessíveis em todo o projeto e podem ser chamadas de qualquer classe de Blueprint. As bibliotecas mantêm funções úteis em um só lugar para que você não precise copiar e colar os mesmos nós em vários Blueprints.
As funções em uma biblioteca de funções de Blueprint são estáticas, o que significa que elas não armazenam ou memorizam informações entre chamadas e não têm conhecimento em relação às informações sobre uma instância de Blueprint específica, a menos que você passe esses dados como parâmetros. Por isso, as bibliotecas de funções são ideais para lógica de uso geral que opera em entradas e retorna um resultado. Quando a funcionalidade depende das variáveis internas de um objeto (como o inventário de um jogador), ela geralmente pertence ao Blueprint desse objeto, em vez de a uma biblioteca.
Biblioteca de macros de Blueprint
Uma biblioteca de macros de Blueprint é um contêiner com uma coleção de macros ou gráficos independentes que podem ser colocados como nós em outros Blueprints. Eles podem economizar tempo, pois podem armazenar sequências de nós usadas com frequência, completas com entradas e saídas para execução e transferência de dados.
As macros são compartilhadas entre todos os gráficos que as referenciam, mas são expandidas automaticamente nos gráficos como se fossem um nó recolhido durante a compilação. Isso significa que as Bibliotecas de Macros de Blueprints não precisam ser compiladas. No entanto, as alterações em uma macro só são refletidas nos gráficos que fazem referência a essa macro quando o Blueprint que contém esses gráficos é recompilado.
Consulte documentações adicionais emBlueprint Macro Library e Como criar macros.
As funções são blocos de lógica reutilizáveis que recebem entradas, são executadas uma vez e podem retornar um resultado. Elas são ideais para cálculos ou verificações. As macros são layouts de gráficos reutilizáveis que se expandem diretamente no Blueprint onde são usadas. Elas podem ter várias saídas de execução e são úteis para o controle de fluxo visual.
Utilitários de Blueprint
Um utilitário de Blueprint (ou utilitário do editor) é um Blueprint exclusivo do editor que pode ser usado para realizar ações do editor ou estender a funcionalidade do editor. Eles podem expor eventos sem parâmetros, como botões, na interface de usuário e têm a capacidade de executar qualquer função exposta a Blueprints e agir no conjunto atual de atores selecionados na janela de visualização.
Conheça uma classe de Blueprint
Antes de começar, você precisará de um projeto do Unreal Editor baseado no modelo First Person (Primeira Pessoa) ou Third Person (Terceira Pessoa) (qualquer variante).
Para obter ajuda na criação de um novo projeto na Unreal Engine, consulte Crie seu primeiro projeto na Unreal
Como abrir um Blueprint existente
Você criou seu projeto a partir de um modelo, então já existem vários Blueprints incluídos no projeto que você pode explorar e usar. Um exemplo de classe de Blueprint incluída é o Blueprint de plataforma de salto, que tem uma funcionalidade que impulsiona a pessoa jogadora para cima. Você pode adicionar instâncias deste Blueprint em qualquer lugar do seu nível.
Para abrir o Blueprint da plataforma de salto, siga estes passos:
Na Unreal Engine, clique no botão Gaveta de Conteúdo no canto inferior esquerdo da tela. Como alternativa, você pode segurar CTRL e pressionar espaço.
Acesse a pasta Content, LevelPrototyping, Interactable, JumpPad.
Você verá um ativo
BP_JumpPad, que é uma classe de Blueprint. Clique duas vezes nesse ativo para abri-lo no Editor de Blueprint.Por padrão, o Blueprint é aberto em uma nova janela. Você pode encaixar uma janela arrastando a aba com o nome do ativo ao lado da aba do nível no editor principal.
No Editor de Blueprint, você pode definir componentes, realizar operações de configuração, responder a eventos, organizar e modularizar operações, definir propriedades e muito mais. Os visuais e a funcionalidade que você adiciona ao Blueprint se aplicam a todas as instâncias desse Blueprint que estão no seu jogo.
Vamos dar uma olhada no BP_JumpPad. Na parte superior da janela, você pode ver três abas: Viewport (Janela de visualização), EventGraph (Gráfico de Eventos) e Construction Script (Script de construção).
Como criar um objeto de nível com componentes
Clique na aba Viewport. De forma semelhante ao uso da janela de visualização no Editor de Níveis principal, você usa a janela de visualização de um Blueprint para ver e editar um Blueprint.
Nesta aba, você verá a representação visual da plataforma de salto, que inclui uma plataforma, uma luz e um efeito de partículas.
No lado esquerdo da janela, você também verá os componentes do Blueprint, ou as peças que definem a composição do Blueprint e o que aparece no seu nível. Use o painel Components para adicionar, remover e reorganizar os componentes do Blueprint.
Os blocos de construção que você pode adicionar ao seu Blueprint com componentes incluem:
Geometria de colisão com os componentes Capsule Collision, Box Collision ou Sphere Collision.
Geometria renderizada na forma de componentes de Static Mesh ou Skeletal Mesh.
Controles de movimento com os componentes de Movement.
Você pode criar um Blueprint que contém apenas componentes e nenhum comportamento de código, agindo como um objeto de nível reutilizável que pode ser editado em um só lugar.
Você também pode referenciar os componentes do seu Blueprint ou suas propriedades no Event Graph, para que possa realizar ações nesses componentes durante o tempo de execução.
Vamos dar uma olhada mais de perto nos componentes que fazem parte de BP_JumpPad:
BP_JumpPad tem um componente de Point Light (Luz pontual). Clique no objeto Point Light na lista de componentes ou na janela de visualização. Você pode usar as ferramentas de transformação para mover e girar essa fonte de luz.
No lado direito do Editor de Blueprint, você verá o painel Detalhes, que lista as propriedades relacionadas ao componente selecionado. Você pode editar a intensidade desta fonte de luz, a cor da luz e muito mais.
Como criar funcionalidade de Blueprint
Ao lado da aba Viewport, você pode ver as abas EventGraph e Construction Script. Se você criar alguma função no seu Blueprint, as abas para esses gráficos de função também serão exibidos aqui.
Os gráficos contêm o comportamento e a funcionalidade de design e de tempo de jogo dos seus Blueprints. Aqui, você criará a lógica que informa aos componentes do Blueprint como se comportar.
Logic refere-se aos nós e conexões de um Blueprint.
Script de Construção
Quando um ator Blueprint é gerado no nível, seja na janela de visualização do Editor de Níveis ou durante a jogabilidade, a Unreal Engine primeiro cria seus componentes e depois executa seu Construction Script (código de construção). Ela também é executada no editor quando você transforma ou altera uma propriedade de um ator, para que veja o resultado imediatamente na janela de visualização. Ele é usado para realizar ações de inicialização que configuram o ator de Blueprint para a jogabilidade. Essas ações de inicialização podem ser específicas de contexto; por exemplo, aplicar diferentes materiais a um objeto dependendo do tipo de terreno em que ele está colocado.
Se você clicar na aba Construction Script de BP_JumpPad, verá um nó Construction Script que executa uma cadeia de ações que configuram a cor e outras propriedades da plataforma de salto quando ela aparece pela primeira vez (ou surge) no nível.
Como navegar nos gráficos de Blueprint:
Panorâmica: clique com o botão direito do mouse e arraste.
Zoom: use a roda do mouse.
Seleção de quadros: pressione F para centralizar nos nós selecionados.
Fit all: pressione A para visualizar o gráfico inteiro.
Jump to: clique duas vezes em uma função ou nó de evento para encontrá-la em um gráfico ou na aba do gráfico.
Event Graph
O Event Graph de um Blueprint contém um gráfico de nós que usa eventos e chamadas de função para realizar ações em resposta a eventos de jogabilidade. É aqui que a interatividade e as respostas dinâmicas são configuradas. Por exemplo, um Blueprint de luz poderia responder a um evento de dano desligando seu componente de luz e alterando um material.
Toda a lógica no Event Graph é uma resposta a algo que acontece durante a jogabilidade, como responder à entrada de jogo, acionar animações ou reproduzir sons. Sempre que você pensar: "quando isso acontece, quero fazer aquilo", precisa começar com um evento.
Um Blueprint pode conter vários Event Graphs que são executados como parte do mesmo Blueprint. Vários Event Graphs são usados apenas para organizar a lógica em seções separadas e não afetam o comportamento do Blueprint.
Na aba EventGraph de BP_JumpPad, você verá uma sequência de nós que são executados quando um ator se sobrepõe a este Blueprint, como quando a pessoa jogadora passa por cima da plataforma de salto no jogo. Quando esse evento ocorre, o Blueprint faz com que o ator realize um movimento de salto, mas com uma velocidade maior do que a normal.
Para encontrar um nó específico em um gráfico, use o atalho CTRL+F nas visualizações do gráfico para pesquisar um nó. Por exemplo, para dar uma olhada no nó Event ActorBeginOverlap, use o atalho CTRL+F e digite Event ActorBeginOverlap no campo de busca. Selecione o resultado para mover a visualização para esse nó.
Um nó que pode executar ações tem um pin de execução, também conhecido como pin exec, representado pelo triângulo branco no nó. Se um pin de execução de um nó não estiver conectado a outro nó, o triângulo fica com um contorno branco.
Você perceberá que o nó Event não tem um pin de execução de entrada. Isso ocorre porque um nó Event é executado assim que o evento definido é acionado no mundo do jogo. Neste exemplo, quando um ator se sobrepõe ao ator de BP_JumpPad no jogo, esse evento será acionado.
Um nó também pode ter pins de dados. Por exemplo, o Evento ActorBeginOverlap tem um pin para Other Actor (Outro ator), que é uma referência ao objeto de nível (ator) que se sobrepõe ao objeto de nível BP_JumpPad. Os pins de dados passam valores entre os nós e os pins de execução controlam a ordem em que os nós são executados.
O pin de execução do nó Event ActorBeginOverlap está conectado ao nó Cast To Character. Isso significa que quando um ator no mundo, como a pessoa jogadora, se sobrepõe ao ator de plataforma de salto, este Blueprint executará o nó Cast To Character.
As conexões entre os nós são frequentemente chamadas de fios.
Se você desconectar o pin de execução do nó Event ActorBeginOverlap do nó Cast To Character, mas mantiver o pin Other Actor conectado, nada acontecerá, pois os pins de execução não estão conectados, ou seja, o nó Event não aciona o nó Cast To Character.
Para remover uma conexão ou fio, mantenha ALT pressionado e clique no fio. Arraste de um pin para outro para conectar um fio.
Para redirecionar um fio, clique duas vezes nele para criar um nó de redirecionamento. Focalize o nó de redirecionamento para que o cursor mude para quatro setas e arraste o nó de redirecionamento para movê-lo.
Para saber mais sobre como trabalhar com ações de nós no Event Graph, consulte Placing Nodes (Como colocar nós) e Connecting Nodes (Como conectar nós.
Variáveis
As variáveis são propriedades que:
Armazenam um valor, como uma medição de distância ou a velocidade com que um personagem pode se mover; ou
Referenciam algo no mundo, como a malha estática que um ator usa.
Você pode definir as variáveis para serem acessíveis apenas a Blueprints, ou torná-las editáveis no Editor de Níveis para que os membros designers possam personalizar facilmente as instâncias de Blueprint colocadas em um nível.
Na aba EventGraph de BP_JumpPad, dê uma olhada no painel My Blueprint à esquerda do Editor de Blueprint.
Na seção Variables, você pode ver duas variáveis: Velocity e Color Target.
Clique na variável Velocity (Velocidade) para selecioná-la. No painel Detalhes, há várias propriedades relacionadas a essa variável. Na parte inferior da lista, você verá a categoria Default Value, onde você pode definir o valor da variável Velocity.
Neste caso, a velocidade é definida como 0, 0, 800. Isso significa que a velocidade aplicada à pessoa jogadora é de 800 unidades no eixo Z, ou para cima.
Então, a funcionalidade da plataforma de salto diz: "quando a pessoa jogadora passa por cima desta plataforma de salto, mova-a para cima a 800 cm/s".
Se você olhar para as variáveis da plataforma de salto, você verá que elas têm ícones de olhoabertos ao lado delas. Isso significa que essas variáveis são variáveis públicas e editáveis, o que as torna editáveis em todas as instâncias desse Blueprint no seu nível.
Você pode substituir os valores padrão de uma variável editável por instância no Editor de Níveis sem precisar abrir e editar o Blueprint.
Para ver um exemplo de como você pode editar variáveis fora de um Blueprint, siga estes passos:
Clique na aba do seu nível perto do canto superior esquerdo do Unreal Editor para voltar ao Editor de Níveis.
Abra o Navegador de Conteúdo e, na pasta JumpPad, arraste o ativo
BP_JumpPadpara o nível no chão. Certifique-se de que esteja selecionado.No painel Detalhes, procure a categoria chamada Default. Nesta categoria, você pode ver as duas variáveis que viu anteriormente: Velocity e Color Target (alvo da cor). Elas ficam visíveis aqui, pois essas duas variáveis estão configuradas como editáveis no Blueprint (o ícone de olho delas está aberto).
Volte à aba
BP_JumpPad. Na seção My Blueprint, Variables, clique no ícone de olho da variávelVelocity para torná-la não pública e não editável. O olho aberto fica fechado.Para aplicar suas alterações, clique no botão Compile no canto superior esquerdo do Editor de Blueprint.
A compilação verifica se há erros no Blueprint e o atualiza para que as últimas alterações funcionem no seu nível.
Volte ao Editor de Níveis, selecione o ator BP_JumpPad e procure novamente na seção Details, Default. A variável Velocity está ausente porque não é mais editável por instância.
Para restaurar os Blueprints à configuração original, volte ao Editor de Blueprint e clique no ícone de olho ao lado da variável Velocity.
Clique em Compile e Save.
Quando as variáveis são públicas e editáveis, elas também podem ser usadas por outros Blueprints. Por exemplo, o Blueprint de nível do seu nível poderia acessar e usar a variável Color Target da plataforma de salto para alterar a cor da plataforma.
Consulte mais informações sobre os tipos de variáveis, a criação e a edição de variáveis e a referência de variáveis em seus gráficos de Blueprint em Blueprint Variables (Variáveis de Blueprint).
Funções
As funções são gráficos de nós pertencentes a um Blueprint específico que podem ser executados ou chamados de outro gráfico dentro do Blueprint. As funções têm um único ponto de entrada designado por um nó com o nome da função que contém um único pin de saída de execução. Chamar a função de outro gráfico executa a lógica na função, começando com o nó de entrada da função.
Ao criar classes de Blueprint, pode ser que você queira reutilizar parte da lógica do Event Graph em vários locais ou até mesmo em outros Blueprints. Em vez de reconstruir a mesma lógica em muitos lugares, você pode criar uma função onde adiciona os nós e, em seguida, chamar essa função de qualquer Blueprint.
Quando você chama uma função que está em outro blueprint, a função ainda é executada no blueprint em que foi criada. A chamada simplesmente lhe dá acesso a essa função de fora.
Por exemplo, você poderia criar uma função HasKey em um Blueprint de personagem jogável que recebe uma chave necessária, compara essa chave com o inventário da pessoa jogadora e retorna verdadeiro ou falso. Então, outros Blueprints (uma porta, um baú, um PNJ) poderiam chamar essa função para verificar se a pessoa tem uma determinada chave antes de realizar algum outro comportamento. Cada um desses objetos de nível diferentes pode reutilizar a lógica na função HasKey do personagem jogável sem precisar recriá-la em seus Blueprints.
Se você estiver usando o mesmo conjunto de nós mais de duas vezes em um gráfico, considere transformá-lo em uma função ou macro para poder reutilizá-lo.
Consulte mais informações em Functions (Funções).
Adicione comentários à lógica do Blueprint
Você pode adicionar comentários aos seus Blueprints para criar notas apenas visuais que agrupam nós e explicam o que cada parte do Blueprint faz. Os comentários ajudam você e os membros da sua equipe a saber rapidamente qual funcionalidade seus nós estão executando e a manter seus Blueprints organizados.
Ao criar a lógica do Blueprint, primeiro concentre-se em criar a funcionalidade e, em seguida, destaque os nós que adicionados e adicione um comentário para contê-los e descrevê-los.
Para adicionar um comentário em um blueprint, siga estas etapas:
Clique no gráfico para garantir que ele seja o painel ativo.
Pressione C no teclado. Isso adiciona uma caixa de comentários.
Clique duas vezes no campo de texto na parte superior da caixa para inserir um comentário.
Para redimensionar o comentário, certifique-se de que o comentário esteja selecionado (destacado em amarelo) e arraste uma borda ou um canto.
Para agrupar nós em um comentário, arraste esses nós para dentro dos limites do comentário.
Você também pode selecionar um ou vários nós e pressionar C para adicionar um comentário que contenha os nós selecionados.
Você também pode alterar a cor dos comentários para ajudar a identificar rapidamente diferentes áreas do seu gráfico.
Continue explorando os Blueprints
Agora que você aprendeu o básico, continue estudando sobre os Blueprints explorando os tópicos ou tutoriais abaixo.