En este tema, aprenderemos cómo integrar C++ con Blueprints en Unreal Engine. Esta integración permite aprovechar la flexibilidad y facilidad de uso de Blueprints junto con la potencia y control de C++. A lo largo de esta sección, cubriremos los siguientes puntos:
- Creación de una Clase C++ Base
- Exponiendo Funciones y Variables a Blueprints
- Llamando Funciones C++ desde Blueprints
- Ejemplo Práctico: Creando un Actor Interactivo
- Ejercicios Prácticos
- Creación de una Clase C++ Base
Paso 1: Crear una Nueva Clase C++
- Abre tu proyecto en Unreal Engine.
- Ve a
File > New C++ Class. - Selecciona
Actorcomo la clase base y haz clic enNext. - Nombra tu clase
MyInteractiveActory haz clic enCreate Class.
Estructura de la Clase
// MyInteractiveActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyInteractiveActor.generated.h"
UCLASS()
class YOURPROJECT_API AMyInteractiveActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyInteractiveActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};// MyInteractiveActor.cpp
#include "MyInteractiveActor.h"
// Sets default values
AMyInteractiveActor::AMyInteractiveActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMyInteractiveActor::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AMyInteractiveActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
- Exponiendo Funciones y Variables a Blueprints
Para que Blueprints pueda acceder a las funciones y variables de nuestra clase C++, debemos usar macros específicas de Unreal Engine.
Exponer Variables
// MyInteractiveActor.h
public:
// Expose a variable to Blueprints
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="Interaction")
FString InteractiveMessage;Exponer Funciones
// MyInteractiveActor.h
public:
// Expose a function to Blueprints
UFUNCTION(BlueprintCallable, Category="Interaction")
void Interact();// MyInteractiveActor.cpp
void AMyInteractiveActor::Interact()
{
UE_LOG(LogTemp, Warning, TEXT("Interacted with: %s"), *InteractiveMessage);
}
- Llamando Funciones C++ desde Blueprints
Crear un Blueprint basado en la Clase C++
- En el Content Browser, haz clic derecho y selecciona
Blueprint Class. - En la ventana que aparece, selecciona
All Classesy buscaMyInteractiveActor. - Selecciona
MyInteractiveActory haz clic enSelect. - Nombra tu Blueprint
BP_MyInteractiveActor.
Usar la Función en el Blueprint
- Abre
BP_MyInteractiveActor. - En el Event Graph, arrastra desde el nodo
Event BeginPlayy buscaInteract. - Conecta el nodo
Interactal nodoEvent BeginPlay.
- Ejemplo Práctico: Creando un Actor Interactivo
Paso 1: Configurar el Actor
- Abre
BP_MyInteractiveActor. - En el panel de detalles, establece el valor de
InteractiveMessagea "Hello, Unreal!".
Paso 2: Colocar el Actor en el Nivel
- Arrastra
BP_MyInteractiveActordesde el Content Browser al nivel.
Paso 3: Probar la Interacción
- Ejecuta el juego y observa el mensaje en la consola cuando el juego comienza.
- Ejercicios Prácticos
Ejercicio 1: Crear un Actor que Cambie de Color
- Crea una nueva clase C++ llamada
ColorChangingActor. - Expon una variable
FLinearColorllamadaNewColora Blueprints. - Expon una función
ChangeColorque cambie el color del material del actor. - Crea un Blueprint basado en
ColorChangingActory configuraNewColor. - Llama a
ChangeColorenEvent BeginPlay.
Solución
// ColorChangingActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "ColorChangingActor.generated.h"
UCLASS()
class YOURPROJECT_API AColorChangingActor : public AActor
{
GENERATED_BODY()
public:
AColorChangingActor();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="Color")
FLinearColor NewColor;
UFUNCTION(BlueprintCallable, Category="Color")
void ChangeColor();
};// ColorChangingActor.cpp
#include "ColorChangingActor.h"
#include "Materials/MaterialInstanceDynamic.h"
AColorChangingActor::AColorChangingActor()
{
PrimaryActorTick.bCanEverTick = true;
}
void AColorChangingActor::BeginPlay()
{
Super::BeginPlay();
}
void AColorChangingActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void AColorChangingActor::ChangeColor()
{
UMaterialInstanceDynamic* DynamicMaterial = CreateAndSetMaterialInstanceDynamic(0);
if (DynamicMaterial)
{
DynamicMaterial->SetVectorParameterValue("BaseColor", NewColor);
}
}Resumen
En esta sección, hemos aprendido cómo integrar C++ con Blueprints en Unreal Engine. Hemos cubierto la creación de una clase C++ base, la exposición de funciones y variables a Blueprints, y cómo llamar funciones C++ desde Blueprints. Además, hemos realizado un ejemplo práctico y proporcionado un ejercicio para reforzar los conceptos aprendidos. Con esta base, estarás preparado para aprovechar al máximo la potencia de C++ y la flexibilidad de Blueprints en tus proyectos de Unreal Engine.
Curso de Unreal Engine
Módulo 1: Introducción a Unreal Engine
- ¿Qué es Unreal Engine?
- Instalando Unreal Engine
- Navegando por la Interfaz
- Creando tu Primer Proyecto
Módulo 2: Conceptos Básicos
Módulo 3: Blueprints Intermedios
- Variables y Tipos de Datos
- Funciones y Eventos
- Comunicación entre Blueprints
- Creando Objetos Interactivos
Módulo 4: Blueprints Avanzados
- Scripting con Blueprints
- IA y Árboles de Comportamiento
- Blueprints de Animación
- Diseño Avanzado de UI
Módulo 5: Programación en C++ en Unreal Engine
- Configurando tu Entorno de Desarrollo
- Sintaxis Básica de C++
- Creando Clases en C++
- Integrando C++ con Blueprints
Módulo 6: Programación Avanzada en C++
Módulo 7: Temas Avanzados
- Física y Colisión
- Renderizado y Post-Procesamiento
- Generación de Contenido Procedural
- Desarrollo de Realidad Virtual
