Como criar linhas do tempo
Você pode criar e instanciar seu próprio componente de linha do tempo em uma classe de ator seguindo as etapas a seguir.
Vá para a pasta Classes C++ e clicar em Add+. No menu suspenso, selecione Nova classe C++.
Selecione a classe de Ator como uma Classe pai.
O nome da classe de ator Ator de linha do tempo criada.
Vá até o arquivo
TimelineActor.he inclua a biblioteca de classeTimelineComponenta seguir.TimelineActor.h
C++#include "Components/TimelineComponent.h"Implemente a seguinte declaração de classe dentro da definição de classe TimelineActor:
TimelineActor.h
C++protected: UPROPERTY(EditAnywhere, BlueprintReadWrite) UTimelineComponent* ExampleTimelineComp;Nesta amostra de código, você usará as tags do especificador de propriedade EditAnywhere e BlueprintReadWrite.
Vá até o arquivo
TimelineActor.cppe adicione o código a seguir ao construtor 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")); }Compile seu código.
Navegue até a pasta Classes C++, clique com o botão direito em TimelineActor e crie um Blueprint baseado na classe TimelineActor. Nomeie como Bp_TimelineActor.
Depois de criar o Blueprint TimelineActor, você poderá visualizar os padrões de classe. Na aba Componentes, você verá o componente de linha do tempo de exemplo.
Código em andamento
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"));
}
Variáveis de linha do tempo
Quando você cria um componente de linha do tempo em C++ usando especificadores UProperty, ele ficará disponível como uma variável na aba Componentes. Isso pode ser útil para designers que gostariam de
continuar fazendo iterações no TimelineComponent pelo script de Blueprint.
A imagem acima mostra o uso da variável native de C++ da linha do tempo para obter o valor da Taxa de reprodução atual da linha do tempo em Blueprints.
Para obter uma lista completa dos nós de linha do tempo de Blueprint disponíveis e suas funcionalidade, confira a página Nós da linha do tempo.
Como criar um FTimeLineEvent
Eventos de linha do tempo (FOnTimelineEvent) são delegados dinâmicos que fornecem funcionalidade a um componente de linha do tempo para processar um evento.
Siga as etapas a seguir para criar um FTimeLineEvent que será vinculado à funcionalidade final do componente de linha do tempo.
Vá para o arquivo
TimelineActor.he declare o código a seguir na Definição de classe:TimelineActor.h
C++protected: //Delegate signature for the function which will handle our Finished event. FOnTimelineEvent TimelineFinishedEvent; UFUNCTION() void TimelineFinishedFunction();Navegue até
TimelineActor.cppe implemente o seguinte código:TimelineActor.cpp
C++void ATimelineActor::TimelineFinishedFunction() { UE_LOG(LogTemp, Warning, TEXT("Finished Event Called.")); }Navegue até o método
ATimelineActor::BeginPlay()e implemente o seguinte 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(); }Você vinculou com sucesso o evento
TimelineFinishedà funçãoTimelineFinishedpersonalizada.Compile o código. Abra o Editor e vá para o Navegador de Conteúdo. Encontre o BP_TimelineActor e arraste-o para o nível.
Pressione o botão Reproduzir. Você deve ver a seguinte mensagem na janela do Log de Saída:
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"));
}