Erstellen von Zeitleisten
Sie können Ihre eigene Zeitleistenkomponente erstellen und instanziieren in einer Actor-Klasse, indem Sie die folgenden Schritte ausführen.
Navigieren Sie zu Ihrem C++-Klassenordner und klicken Sie auf Hinzufügen+. Wählen Sie aus dem Dropdown-Menü Neue C++-Klasse.
Wählen Sie die Actor-Klasse als übergeordnete Klasse.
Benennen Sie die erstellte Actor-Klasse Timeline-Actor.
Navigieren Sie zu Ihrer Datei
TimelineActor.hund fügen Sie folgendeTimelineComponent-Klassenbibliothek hinzu.TimelineActor.h
C++#include "Components/TimelineComponent.h"Implementieren Sie die folgende Klassendeklaration innerhalb der TimelineActor-Klassendefinition:
TimelineActor.h
C++protected: UPROPERTY(EditAnywhere, BlueprintReadWrite) UTimelineComponent* ExampleTimelineComp;In diesem Codebeispiel verwenden Sie die Property Specifier Tags, EditAnywhere, und BlueprintReadWrite.
Navigieren Sie zur Datei
TimelineActor.cppund fügen Sie dann den folgenden Code zu Ihrem TimelineActor-Konstruktor hinzuATimelineActor::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")); }Kompilieren Sie Ihren Code.
Navigieren Sie zum C++-Klassenordner, klicken Sie mit der rechten Maustaste auf Ihren TimelineActor und erstellen Sie einen Blueprint basierend auf Ihrer TimelineActor-Klasse. Bennenen Sie es Bp_TimelineActor.
Sobald Sie Ihren TimelineActor Blueprint erstellt haben, können Sie die Klassenstandards sehen. Vom Tab Komponenten sollten Sie das Beispiel Ihrer „Timeline-Komponente“ sehen.
In Arbeit befindlicher Code
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"));
}
Zeitleistenvariablen
Wenn Sie eine Zeitleistenkomponente in C++ mit UProperty-Spezifizierer erstellen, wird es als Variable in Ihrem Tab Komponenten verfügbar sein. Dies kann für Designer nützlich sein, die
Sie möchten weiterhin Iterationen an Ihrer TimelineComponent über Blueprint Scripting vornehmen.
Das Bild oben zeigt die Verwendung der nativen C++-Zeitleistenvariable, um den aktuellen Wiedergaberatenwert der Zeitleiste in Blueprint zu erhalten.
Eine vollständige Liste der verfügbaren Blueprint Timeline-Knoten und ihrer Funktionalität finden Sie auf der Seite Timeline nodes.
Erstellen eines FTimeLineEvent
Zeitleistenevents (FOnTimelineEvent) sind Dynamic Delegates die einer Zeitleistenkomponente die Funktionalität zur Verarbeitung eines Events bereitstellen.
Befolgen Sie die nachstehenden Schritte, um Ihr eigenes FTimeLineEvent an die fertige Funktionalität Ihrer Timeline-Komponente zu binden.
Navigieren Sie zur Datei
TimelineActor.hund deklarieren Sie den folgenden Code in der Klassendefinition:TimelineActor.h
C++protected: //Delegate signature for the function which will handle our Finished event. FOnTimelineEvent TimelineFinishedEvent; UFUNCTION() void TimelineFinishedFunction();Navigieren Sie zu
TimelineActor.cppund implementieren Sie den folgenden Code:TimelineActor.cpp
C++void ATimelineActor::TimelineFinishedFunction() { UE_LOG(LogTemp, Warning, TEXT("Finished Event Called.")); }Navigieren Sie zur
ATimelineActor::BeginPlay()-Methode und implementieren Sie den folgenden Code: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(); }Sie haben nun erfolgreich Ihr Event
TimelineFinishedmit Ihren FunktionenTimelineFinishedgebunden.Kompilieren Sie Ihren Code. Öffnen Sie den Editor und navigieren Sie zum Inhaltsbrowser. Finden Sie Ihren BP_TimelineActor und ziehen Sie ihn in die Ebene.
Drücken Sie die Taste Spielen. Sie sollten die folgende Meldung im Outputprotokoll-Fenster sehen:
Vollständiger Code
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"));
}