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) 。
-
从 内容浏览器 中选择 添加/导入(Add/Import) > 蓝图类(Blueprint Class) ,创建名为 BP_TimelineActor 的新Actor蓝图。将显示 选取父类(Pick Parent Class) 对话框。
-
在类默认设置中,右键点击 事件(Event) 图表(Graph) ,从 蓝图上下文菜单(Blueprint Context Menu) 中选择 添加时间轴(Add Timeline) 。
新的时间轴节点将添加到事件图表中。
将时间轴添加到蓝图类之后,它将列示在 我的蓝图(My Blueprint) 选项卡中。
时间轴变量
创建时间轴后,你会发现它变成了 我的蓝图(My Blueprint) 选项卡中的可用变量。这是为了实现对时间轴组件的引用,在必须使用时间轴节点的时候,此法尤为有用。这些节点的存在是为了能够访问某时间轴的特定功能,例如其播放速率。
本例中使用Get Timeline 0变量查询该时间轴的当前播放速率(Play Rate)值。
此类节点有很多,可用于查询各个值和控制时间轴节点的行为。如需可用Timeline节点的完整列表及其功能详情,请参阅 时间轴节点 。
创建时间轴事件
时间轴事件为时间轴组件提供处理自定义事件或函数的功能。按照下列示例步骤操作,了解如何实现你自己的事件。
-
打开 BP_TimelineActor ,然后选中并拖移 开始播放(Begin play) 的 执行引脚 ,将其连接到你的时间轴组件的 播放(Play) 执行引脚。
-
下一步,选择并拖移 完成(Finished) 执行引脚,使用字符串" Timeline Finished "创建新的 打印字符串节点(print string node) 。
-
编译(Compile) 并 保存(Save) ,然后按 PIE 。
长度
重命名时间轴
若在蓝图中使用多个时间轴,务必相应地命名各个时间轴。所有时间轴默认命名为"Timeline_X",末尾是序列号。要重命名某个时间轴,你可以在"图表(Graph)"选项卡或 我的蓝图(My Blueprint) 选项卡中 右键点击 该时间轴,然后选择 重命名(Rename) 。
打开时间轴编辑器
有待执行的任务时才需要创建时间轴。欲详细了解如何编辑时间轴,请参阅 时间轴编辑页面 。
创建时间轴
可按照以下步骤在 Actor 类中创建并实例化你自己的 时间轴组件(Timeline Component) 。
-
导航至你的 C++ 类文件夹 ,右键点击 内容浏览器窗口 。从下拉菜单中选择 新建C++类(New C++ class) 。
-
创建新的Actor类,命名为 Timeline Actor 。
导航至你的TimelineActor.h文件。需要包括以下时间轴组件库,方可利用其功能。
include "Components/TimelineComponent.h
在TimelineActor类定义中,实现以下类声明:
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UTimelineComponent* ExampleTimelineComp;
此代码示例中,我们利用了 属性说明符标签 、 EditAnywhere 和 BlueprintReadWrite 。
-
用默认子对象模板实例化你的时间轴组件,然后向你的TimelineActor构造函数 ATimelineActor::ATimelineActor: 添加以下代码
ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
-
从 虚幻编辑器 中选择 编译(Compile) , 热重载 你的代码。
-
从C++类文件夹中,右键点击你的 TimelineActor ,并基于你的TimelineActor类创建蓝图。将其命名为 Bp_TimelineActor 。
创建TimelineActor蓝图后,你可以查看 类默认值(Class Defaults) 。 从 组件(Components) 选项卡中,应可看到你的时间轴组件示例。
时间轴变量
当你在C++中使用UProperty说明符创建时间轴组件后,该组件会成为组件(Components)选项卡中的可用变量。对于想要继续通过蓝图脚本对时间轴组件进行迭代的设计人员来说, 这个变量很有用。
上图中,我们使用原生c++时间轴变量获取蓝图中时间轴的当前播放速率(Current Play Rate)值。
如需可用蓝图Timeline节点的完整列表及其功能详情,请参阅 时间轴节点 页面。
创建FTimeLineEvent
时间轴事件(
FOnTimelineEvent
)是
动态委托
,为时间轴组件提供处理事件的能力。
按以下步骤创建你自己的FTimeLineEvent,并将其绑定到你的时间轴组件的已完成功能。
-
首先,导航至你的
TimelineActor.h文件
,在 类定义 中声明以下代码:protected: //委托将处理已完成事件的函数的签名。 FOnTimelineEvent TimelineFinishedEvent;
UFUNCTION()
void TimelineFinishedFunction();
-
下一步,在 TimelineActor.cpp 中为你的
TimelineFinishedFunction
实现以下代码:UE_LOG(LogTemp, Warning, TEXT("Finished Event Called."));
-
导航至你的void ATimelineActor::BeginPlay()方法,并实现以下代码:
Super::BeginPlay();
现在你已成功将TimelineFinished事件绑定到自定义TimelineFinished函数。
-
最后,在编辑器中编译你的代码,并将Bp_TimelineActor的实例拖动到关卡中。 按"在编辑器中运行"(PIE)。 在输出日志窗口中应该可以看到以下消息: