创建时间轴

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

Choose your operating system:

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;

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

  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

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