Para programadores de C++
Para usar la secuenciación de comandos de Blueprint, solo necesitas Unreal Engine. Todas las funciones que necesitas están integradas.
Para escribir código en C++, descarga Visual Studio en Windows o instala Xcode en macOS. La primera vez que crees un proyecto de C++ en Unreal Engine (o añadas código C++ a un proyecto existente), Unreal Engine creará automáticamente los archivos del proyecto de Visual Studio.
Hay dos formas de acceder a Visual Studio desde tu proyecto de Unreal Engine:
-
En el explorador de contenido, haz doble clic en una clase C++ para abrirla en Visual Studio.
-
En el menú principal, ve a Tools > Open Visual Studio. Esta opción solo aparece si tu proyecto contiene, como mínimo, una clase C++.
Una diferencia importante en Unreal Engine: a veces, tendrás que cargar de nuevo manualmente los archivos de tu proyecto de Visual Studio (por ejemplo, después de descargar una nueva versión de Unreal Engine o cuando realices cambios de forma manual en las ubicaciones de los archivos fuente en el disco). Puedes hacer esto de dos formas:
-
En el menú principal de Unreal Engine, ve a Tools > Refresh Visual Studio Project.
-
Haz clic con el botón derecho en el archivo .uproject en el directorio de tu proyecto y selecciona Generate Visual Studio project files.
Escritura de funciones de eventos (Start, Update, etc.)
Si ya has trabajado con MonoBehaviors, seguramente conozcas métodos como Start, Update y OnDestroy. A continuación tienes una comparación entre un comportamiento de Unity y su equivalente para actores y componentes de Unreal Engine.
En Unity, puedes tener un componente sencillo como este:
public class MyComponent : MonoBehaviour
{
void Start() {}
void OnDestroy() {}
void Update() {}
}
En Unreal Engine, puedes escribir código en el propio actor en lugar de programar solo nuevos tipos de componentes. Es realmente útil.
Los actores de Unreal Engine tienen un conjunto de métodos similar a las funciones Start, OnDestroy y Update de Unity. Se muestran a continuación:
C++
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
// Se llama al principio del juego.
void BeginPlay();
// Se llama al destruirse.
void EndPlay(const EEndPlayReason::Type EndPlayReason);
// Se llama en cada fotograma para actualizar este actor.
void Tick(float DeltaSeconds);
};
Blueprint
Los componentes de Unreal Engine contienen diferentes funciones. Este es un ejemplo básico:
C++
UCLASS()
class UMyComponent : public UActorComponent
{
GENERATED_BODY()
// Se llama después de la creación del actor propietario.
void InitializeComponent();
// Se llama cuando el componente o el actor propietario se están destruyendo.
void UninitializeComponent();
// Versión de componente del tic
void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction);
};
Blueprint
Recuerda que, en Unreal Engine, debes llamar a la versión de la clase padre del método.
Por ejemplo, en el C# de Unity, esto sería base.Update(), pero, en el C++ de Unreal Engine, usarás Super::TickComponent():
void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
// Material de tic personalizado aquí
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
En C++, algunas clases usan el prefijo A y otras usan el prefijo U. A indica una subclase Actor, mientras que U indica una subclase Object. Otro prefijo común es F, que se usa para las estructuras de datos más sencillas y los objetos que no son de UObject.