Exponer Propiedades y Funciones C++ a Blueprints (Para Game Audio)

If you prefer to read an English version, click on this button =>

Unreal Engine Version: 5.0.2

El scripting visual de Unreal Engine (Blueprints), es una herramienta completa y poderosa para crear sistemas de audio (y todo lo demás!) para nuestros proyectos. A pesar de esto, hay ocasiones en donde queremos interactuar y colaborar con los programadores de nuestro equipo quienes escriben código nativo C++. No necesitamos ser programadores expertos para lograr esto. En este tutorial, te doy un ejemplo simple sobre como crear propiedades y funciones en C++ para audio en Unreal Engine 5, y como exponerlos a Blueprints.

Vamos a crear un proyecto third-person vacio llamado “MyUE5Project” y un Sound Wave dentro de él.

Necesitas tener instalado un IDE antes de continuar (Visual Studio para Windows or Xcode para Mac). Yo uso Rider como mi IDE preferido, por esta razón puede que mi interface se vea distinta a la tuya.

 
 
 

Primeros Pasos:

 
 

1. Crea tu proyecto UE5

Abre el Epic Games Launcher y crea un nuevo proyecto C++ - Third Person Project:

 

Click on me!

 

Tu proyecto será creado y compilado….

En tu editor UE5 ve a Tools > Open Visual Studio o Tools > Open Xcode.

Vamos a trabajar en la clase “Character” la cual se llama “MyUE5ProjectCharacter” en tu proyecto.

Dentro de tu IDE ve a Games/MyUEProject/Source/MyUEProject y abre ambos “MyUE5ProjectCharacter.cpp” y "MyUE5ProjectCharacter.h”.

 
 

Sobre los archivos .h y .cpp: Cada vez que creamos una clase en Unreal Engine, este crea dos archivos. El archivo con extensión .h o “header/encabezado” va a contener las “Declaraciones” (Propiedades/Variables, Constantes y Funciones), y el archivo con extensión .cpp va a contener las “Implementaciones” o "Definiciones” de estas declaraciones.

2. Propiedad USoundWave

Dentro de"MyUE5ProjectCharacter.h” crea una propiedad de clase “USoundWave” y llámala “testSound”. Encima de esta declaración, añade el macro UPROPERTY con unos argumentos que nos permitirán exponer dicha declaración al editor y a blueprints:


UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Audio")
USoundWave* testSound;

 
 

3. Función Personalizada: PlayTestSound()

Dentro de "MyUE5ProjectCharacter.h”, declara una función llamada PlayTestSound(). Encima de esta declaración, añade el macro UFUNCTION con unos argumentos que nos permitirán exponer dicha declaración al editor y a blueprints:


UFUNCTION(BlueprintCallable, Category="Audio")
void PlayTestSound();

 
 

Dentro de "MyUE5ProjectCharacter.cpp” define a PlayTestSound(), llamándolo desde la clase en donde fue creado usando AMyUE5ProjectCharacter::PlayTestSound(). Dentro de estas llaves: “{}”, escribe UGameplayStatics::PlaySound2D() con estos argumentos: “this” y tu propiedad USoundWave, “testSound”.


void AMyUE5ProjectCharacter::PlayTestSound()
{
    UGameplayStatics::PlaySound2D(this, testSound);
}

this: El USoundWave será colocado al objeto en donde este script está conectado. to the Object where this script is attached.

testSound: El USoundWave el cual esta función va a reproducir.

 
 

4. Compila

Guarda tu código modificado. Vuelve al proyecto UE y compila.

Blueprints:

 

1. Agrega un archivo de audio

En el editor, da click en el Content Drawer y luego da click en Import para añadir un archivo de audio .Wav. Como alternativa, puedes arrastrar tu archivo directamente en el editor.

IMPORTANTE: Por el momento UE5 solo soporta archivos de 16 bits. Si prefieres, puedes usar este archivo de audio:

2. Third Person Character Blueprint

En tu Content Drawer ve a Content > Third Person > Blueprints y da doble click a “BP_ThirdPersonCharacter”

“BP_ThirdPersonCharacter” es una clase Blueprint heredada de la clase C++ en la que trabajamos antes: "MyUE5ProjectCharacter”. Es muy común que las clases C++ sean los “padres” de las clases Blueprint.

Después de abrir tu Blueprint, puede que veas este mensaje:

“NOTE: This is a data only blueprint, so only the default values are shown. It does not have any script or variables".

Traducción: “NOTA: Este es solo un blueprint de datos, entonces solo los valores por defecto son expuestos. No contiene ningún script o variable".

Da click en: Open Full Blueprint Editor

 
 

Selecciona el Event Graph y da click en el botón en forma de engranaje, luego da click en “Show Inherited Variables”. Ahora, deberías ver tu propiedad “Test Sound” expuesta.

Selecciona “Test Sound” y ve al panel Details en la parte derecha de tu editor. Asigna tu sonido a “Test Sound”

 
 

3. Trigger your sound with PlayTestSound()

Dentro del Graph Editor, da click derecho y busca “Keyboard Events E”. Click izquierdo para añadirlo.

Dentro del Graph Editor, da click derecho y busca tu función C++ “Play Test Sound”. Click izquierdo para añadirla.

Dentro del Graph Editor, da click derecho y busca “Print String”. Click izquierdo para añadirlo.

Conecta todos los nodos y escribe un texto personalizado en In String. Si gustas, da click en la flecha hacia abajo y extiende la duración de este mensaje. Tu diagrama debería verse así:

 
 

Keyboard Events E va a “disparar” la función C++: PlayTestSound() y después mostrar un mensaje en la pantalla.

Gameplay:

Vuelve al editor principal y da click en el botón Play. Cuando estés dentro del juego, presiona la tecla “E”. Ahora, deberías poder escuchar tu audio!

IMPORTANTE: Si presionas la tecla “E” más de una vez, más instancias de tu archivo de audio van a empezar a reproducirse encima de las anteriores. Vamos a aprender como lidiar con esto en futuros tutoriales.

 
 

EL FIN

〰️〰️〰️

EL FIN 〰️〰️〰️

Previous
Previous

UPROPERTY & UFUNCTION en Unreal Engine 5 (Para Game Audio)

Next
Next

Integración de Unreal Engine 5 con FMOD (Blueprint & C++)