创建时间轴

本文涵盖了对于如何在蓝图和C++中创建 **时间轴** 节点的概述。

Windows
MacOS
Linux

选择实现方法:

Blueprints

C++

课程:蓝图基本概念|蓝图 - 基本概念|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Fblueprints---essential-concepts%2FBPEssentialsThumbnail_1920x1080-1920x1080-2fcdde875f1d79ade1c295fe4fef53c4b8c5ecde.PNG?resize=1&w=1400|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Fblueprints---essential-concepts%2FBlueprint--Essential-Concepts-1000x1000-9f372ce55de42ce9596dffd6c931839e44fcc873.png?resize=1&w=300 课程:使用蓝图进行交互式材质交换|使用蓝图进行交互式材质交换|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Finteractive-material-swaps-using-blueprints%2F406---Hero2-1920x1080-ce26b6199cf620364149d2d934c73ae30e983110.png?resize=1&w=1400|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Finteractive-material-swaps-using-blueprints%2FInteractive-Material-Swaps-Using-Blueprints-1000x1000-21158a5fe67365e3bf5db49712b52482382f15ac.png?resize=1&w=300 课程:制作蓝图产品配置器|企业级蓝图|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Fblueprint-for-enterprise%2F301-Blueprints-%281200X675%29-1200x675-d140b8a0b13b05c0619e35e1076b4c82e4a4b855.png?resize=1&w=1400|https://cdn2.unrealengine.com/Unreal+Engine%2Fonlinelearning-courses%2Fblueprint-for-enterprise%2FBlueprint-for-Enterprise-1000x1000-13caa11b8e5c5e91506a8dd63b39d247318c3208.png?resize=1&w=300

创建时间轴

可按照以下步骤在 Actor 蓝图中创建你自己的 时间轴组件(Timeline Component)

  1. 内容浏览器 中选择 添加/导入(Add/Import) > 蓝图类(Blueprint Class),创建名为 BP_TimelineActor 的新Actor蓝图。将显示 选取父类(Pick Parent Class) 对话框。

    图像替换文本

  2. 在类默认设置中,右键点击 事件(Event) 图表(Graph),从 蓝图上下文菜单(Blueprint Context Menu) 中选择 添加时间轴(Add Timeline)

    图像替换文本

新的时间轴节点将添加到事件图表中。

图像替换文本

将时间轴添加到蓝图类之后,它将列示在 我的蓝图(My Blueprint) 选项卡中。

图像替换文本

时间轴变量

创建时间轴后,你会发现它变成了 我的蓝图(My Blueprint) 选项卡中的可用变量。这是为了实现对时间轴组件的引用,在必须使用时间轴节点的时候,此法尤为有用。这些节点的存在是为了能够访问某时间轴的特定功能,例如其播放速率。

图像替换文本

本例中使用Get Timeline 0变量查询该时间轴的当前播放速率(Play Rate)值。

图像替换文本

此类节点有很多,可用于查询各个值和控制时间轴节点的行为。如需可用Timeline节点的完整列表及其功能详情,请参阅时间轴节点

创建时间轴事件

时间轴事件为时间轴组件提供处理自定义事件或函数的功能。按照下列示例步骤操作,了解如何实现你自己的事件。

  1. 打开 BP_TimelineActor,然后选中并拖移 开始播放(Begin play)执行引脚,将其连接到你的时间轴组件的 播放(Play) 执行引脚。

    图像替换文本

  2. 下一步,选择并拖移 完成(Finished) 执行引脚,使用字符串"Timeline Finished"创建新的 打印字符串节点(print string node)

  3. 编译(Compile)保存(Save),然后按 PIE

    图像替换文本 长度

重命名时间轴

若在蓝图中使用多个时间轴,务必相应地命名各个时间轴。所有时间轴默认命名为"Timeline_X",末尾是序列号。要重命名某个时间轴,你可以在"图表(Graph)"选项卡或 我的蓝图(My Blueprint) 选项卡中 右键点击 该时间轴,然后选择 重命名(Rename)

图像替换文本

图像替换文本

打开时间轴编辑器

有待执行的任务时才需要创建时间轴。欲详细了解如何编辑时间轴,请参阅时间轴编辑页面

创建时间轴

可按照以下步骤在 Actor 类中创建并实例化你自己的 时间轴组件(Timeline Component)

  1. 导航至你的 C++ 类文件夹,右键点击 内容浏览器窗口。从下拉菜单中选择 新建C++类(New C++ class)

  2. 创建新的Actor类,命名为 Timeline Actor

    ClassWizard.png

导航至你的TimelineActor.h文件。需要包括以下时间轴组件库,方可利用其功能。

include "Components/TimelineComponent.h

在TimelineActor类定义中,实现以下类声明:

protected:
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    UTimelineComponent* ExampleTimelineComp;

此代码示例中,我们利用了属性说明符标签EditAnywhereBlueprintReadWrite

  1. 用默认子对象模板实例化你的时间轴组件,然后向你的TimelineActor构造函数 ATimelineActor::ATimelineActor: 添加以下代码

    ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
  2. 虚幻编辑器 中选择 编译(Compile)热重载 你的代码。

    HotReloadCompile.png

  3. 从C++类文件夹中,右键点击你的 TimelineActor,并基于你的TimelineActor类创建蓝图。将其命名为 Bp_TimelineActor

    BpTimelineActor.png

创建TimelineActor蓝图后,你可以查看 类默认值(Class Defaults)。 从 组件(Components) 选项卡中,应可看到你的时间轴组件示例。

ClassDefaults.png

时间轴变量

当你在C++中使用UProperty说明符创建时间轴组件后,该组件会成为组件(Components)选项卡中的可用变量。对于想要继续通过蓝图脚本对时间轴组件进行迭代的设计人员来说, 这个变量很有用。

ExamplePlayRate.png

上图中,我们使用原生c++时间轴变量获取蓝图中时间轴的当前播放速率(Current Play Rate)值。

如需可用蓝图Timeline节点的完整列表及其功能详情,请参阅时间轴节点页面。

创建FTimeLineEvent

时间轴事件(FOnTimelineEvent)是动态委托,为时间轴组件提供处理事件的能力。 按以下步骤创建你自己的FTimeLineEvent,并将其绑定到你的时间轴组件的已完成功能。

  1. 首先,导航至你的 TimelineActor.h文件,在 类定义 中声明以下代码:

    protected:
        //委托将处理已完成事件的函数的签名。
        FOnTimelineEvent TimelineFinishedEvent;
    UFUNCTION()
    void TimelineFinishedFunction();
  1. 下一步,在 TimelineActor.cpp 中为你的 TimelineFinishedFunction 实现以下代码:

    UE_LOG(LogTemp, Warning, TEXT("Finished Event Called."));
  2. 导航至你的void ATimelineActor::BeginPlay()方法,并实现以下代码:

    Super::BeginPlay();

    现在你已成功将TimelineFinished事件绑定到自定义TimelineFinished函数。

  3. 最后,在编辑器中编译你的代码,并将Bp_TimelineActor的实例拖动到关卡中。 按"在编辑器中运行"(PIE)。 在输出日志窗口中应该可以看到以下消息:

    OutputMessage.png

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消