Créer des chronologies
Vous pouvez créer et instancier votre propre composant de chronologie dans une classe Acteur en procédant comme suit.
Accédez à votre dossier Classes_C++ et cliquez sur le bouton Ajouter+. Dans le menu déroulant, sélectionnez Nouvelle classe C++.
Sélectionnez la classe Acteur comme classe parente.
Nom de la classe d'acteur créée Acteur de chronologie.
Accédez au fichier
TimelineActor.het ajoutez la bibliothèque de classesTimelineComponentsuivante.TimelineActor.h
C++#include "Components/TimelineComponent.h"Implémentez la déclaration de classe suivante dans la définition de classe TimelineActor :
TimelineActor.h
C++protected: UPROPERTY(EditAnywhere, BlueprintReadWrite) UTimelineComponent* ExampleTimelineComp;Dans cet exemple de code, vous utilisez les balises de spécificateur de propriété EditAnywhere et BlueprintReadWrite.
Accédez au fichier
TimelineActor.cpp, puis ajoutez le code suivant à votre constructeur TimelineActorATimelineActor::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")); }Compilez votre code.
Accédez au dossier Classes_C++, faites un clic droit sur TimelineActor et créez un blueprint basé sur votre classe TimelineActor. Nommez-le Bp_TimelineActor.
Après avoir créé votre blueprint TimelineActor, vous pouvez consulter les valeurs de classe par défaut. Votre exemple de composant de chronologie doit figurer dans l'onglet Composants.
Code en cours de réalisation
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 chronologie
Lorsque vous créez un composant de chronologie dans C++ à l'aide de spécificateurs UProperty, il devient disponible en tant que variable dans l'onglet Composants. Cette fonctionnalité peut s'avérer utile pour les concepteurs qui souhaitent
continuer à itérer sur votre composant de chronologie via le script de blueprint.
L'image ci-dessus illustre l'utilisation de la variable de chronologie C++ native pour obtenir la valeur de fréquence de lecture actuelle de la chronologie dans le blueprint.
Vous trouverez une liste complète des nœuds Timeline de blueprint et de leurs fonctionnalités sur la page Nœuds Timeline.
Créer un événement FTimeLineEvent
Les événements de chronologie (FOnTimelineEvent) sont des délégués dynamiques qui fournissent une fonctionnalité à un composant de chronologie pour gérer un événement.
Procédez comme suit pour créer votre propre FTimeLineEvent à lier à la fonctionnalité terminée de votre composant de chronologie.
Accédez au fichier
TimelineActor.het déclarez le code suivant dans la définition de classe :TimelineActor.h
C++protected: //Delegate signature for the function which will handle our Finished event. FOnTimelineEvent TimelineFinishedEvent; UFUNCTION() void TimelineFinishedFunction();Accédez à
TimelineActor.cppet implémentez le code suivant :TimelineActor.cpp
C++void ATimelineActor::TimelineFinishedFunction() { UE_LOG(LogTemp, Warning, TEXT("Finished Event Called.")); }Accédez à la méthode
ATimelineActor::BeginPlay()et implémentez le code suivant :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(); }Vous venez de lier votre événement
TimelineFinishedà votre fonctionTimelineFinishedpersonnalisée.Compilez votre code. Ouvrez l'éditeur et accédez au navigateur de contenu. Recherchez votre BP_TimelineActor et faites-le glisser dans le niveau.
Appuyez sur le bouton Jouer. Le message suivant doit s'afficher dans la fenêtre Journal de sortie :
Code final
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"));
}