Cómo crear escalas de tiempo
Puedes crear e instanciar tu propio Componente de escala de tiempo en una clase Actor siguiendo los pasos que se indican a continuación.
Dirígete a la carpeta Clases C++ y haz clic en Añadir+. En el menú desplegable, selecciona Nueva clase C++.
Selecciona la clase Actor como una clase padre.
Nombra la clase Actor creada Timeline Actor.
Dirígete al archivo
TimelineActor.he incluye la siguiente biblioteca de clasesTimelineComponent.TimelineActor.h
C++#include "Components/TimelineComponent.h"Implementa la siguiente declaración de clase dentro de la definición de clase TimelineActor:
TimelineActor.h
C++protected: UPROPERTY(EditAnywhere, BlueprintReadWrite) UTimelineComponent* ExampleTimelineComp;En este código de muestra, usarás las Property Specifier Tags, EditAnywhere y BlueprintReadWrite.
Dirígete al archivo
TimelineActor.cppy añade el siguiente código a tu constructor de TimelineActor:ATimelineActor::ATimelineActor()TimelineActor.cpp
C++ATimelineActor::ATimelineActor() { // 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; ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent")); }Compila el código.
Dirígete a la carpeta clases C++, haz clic derecho en tu TimelineActor y crea un blueprint basado en la clase TimelineActor. Nómbralo Bp_TimelineActor.
Cuando hayas creado el blueprint TimelineActor, podrás ver los valores predeterminados de la clase. En la pestaña Componentes, podrás ver tu componente de escala de tiempo de muestra.
Código en progreso
TimelineActor.h
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TimelineActor.generated.h"
UCLASS()
class CPPTIMELINE_API ATimelineActor : public AActor
{
GENERATED_BODY()
TimelineActor.cpp
#include "TimelineActor.h"
// Sets default values
ATimelineActor::ATimelineActor()
{
// 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;
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}
Variables de escala de tiempo
Cuando crees un componente de escala de tiempo en C++ con especificadores UProperty, estará disponible como variable en la pestaña Componentes. Esto puede resultar útil para los diseñadores que
quieran seguir realizando iteraciones en el TimelineComponent a través de scripts de blueprints.
La imagen anterior muestra el uso de la variable de la escala de tiempo nativa de C++ para obtener el valor de la tasa de reproducción actual de la escala de tiempo en blueprint.
Para obtener una lista completa de los nodos de escala de tiempo de Blueprint disponibles y sus funciones, consulta la página de Timeline nodes.
Cómo crear un FTimeLineEvent
Los eventos de la escala de tiempo (FOnTimelineEvent) son Dynamic Delegates que proporcionan funciones a un componente de escala de tiempo para gestionar un evento.
Sigue los pasos que se indican a continuación para crear tu propio FTimeLineEvent y vincularlo a las funciones terminadas del componente de escala de tiempo.
Dirígete al archivo
TimelineActor.hy declara el siguiente código en la definición de clase:TimelineActor.h
C++protected: //Delegate signature for the function which will handle our Finished event. FOnTimelineEvent TimelineFinishedEvent; UFUNCTION() void TimelineFinishedFunction();Dirígete a
TimelineActor.cppe implementa el siguiente código:TimelineActor.cpp
C++void ATimelineActor::TimelineFinishedFunction() { UE_LOG(LogTemp, Warning, TEXT("Finished Event Called.")); }Dirígete al método
ATimelineActor::BeginPlay()e implementa el siguiente código:TimelineActor.cpp
C++// Called when the game starts or when spawned void ATimelineActor::BeginPlay() { Super::BeginPlay(); TimelineFinishedEvent.BindUFunction(this, FName("TimelineFinishedFunction")); ExampleTimelineComp->SetTimelineFinishedFunc(TimelineFinishedEvent); ExampleTimelineComp->PlayFromStart(); }Ya has vinculado el evento
TimelineFinisheda la funciónTimelineFinishedpersonalizada.Compila el código. Abre el editor y dirígete al explorador de contenido. Busca el BP_TimelineActor y arrástralo al nivel.
Pulsa el botón Reproducir. Debe aparecer el siguiente mensaje en la ventana Registro de salida:
Código finalizado
TimelineActor.h
#pragma once
#include "Components/TimelineComponent.h"
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TimelineActor.generated.h"
UCLASS()
class CPPTIMELINE_API ATimelineActor : public AActor
{
GENERATED_BODY()
TimelineActor.cpp
#include "TimelineActor.h"
// Sets default values
ATimelineActor::ATimelineActor()
{
// 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;
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}