一个时间轴的应用示例。在这里示例中,我们将实现一盏可随时间闪烁并改变颜色的灯光。
Choose your operating system:
Windows
macOS
Linux
选择实现方法:
Blueprints
C++
时间轴节点(Timeline Nodes) 是蓝图中的特殊节点,允许你快速设计出基于时间的动画效果,并在时间轴上设置关键帧,触发 事件 ,或调整 浮点数 、 向量 或 颜色 。
你可以直接在蓝图编辑器中编辑时间轴,只需在图表(Graph)选项卡中或我的蓝图(My Blueprint)选项卡中双击时间轴(Timeline)。它们主要用于处理一些简单的、非动画任务,例如开门、改变光源或在场景中对Actor执行其他基于相关的操作。它们类似于 关卡序列 ,因为它们都允许你在不同帧之间对浮点、向量、颜色的数值进行插值运算。
输入和输出
时间轴包含以下输入、输出引脚:
输入引脚
项目 |
描述 |
|
---|---|---|
Play(播放) |
使得时间轴从当前时间处开始正向播放。 |
|
Play from Start(从开始处播放) |
使得时间轴从开始处正向播放。 |
|
Stop(暂停) |
在当前时间处停止播放时间轴。 |
|
Reverse(反向播放) |
从当前时间处反向播放时间轴。 |
|
Reverse from End(从结尾处开始反向播放) |
从结尾开始反向播放时间轴。 |
|
Set New Time(设置新时间) |
将当前时间设置为New Time(新时间)输入中的设置的变量(或输入)。 |
|
New Time(新时间) |
该数据引脚取入一个代表时间的浮点值,以秒为单位,当调用Set New Time(设置新时间)输入时,时间轴可以跳转到该浮点值设置的时间处。 |
输出引脚
项目 |
描述 |
|
---|---|---|
Update(更新) |
一调用该时间轴就输出一个执行信号。 |
|
Finished(完成) |
当播放结束时输出一个执行信号。该引脚不会被Stop函数触发。 |
|
Direction(方向) |
输出枚举数据,指明了时间轴的当前播放方向。 |
时间轴可以额外增加任意数量的输出数据引脚,用于反映在时间轴中创建的轨道类型,包括Float(浮点型)、Vector(向量型)和Event(事件)轨道。
概览(C++)
UTimelineComponent 包含一系列的 事件(events) 、 浮点数(floats) 、 向量(vectors) 或 颜色(colors) 及其关联的关键帧。这些内容继承自 UActorComponents
如需更多文档信息,请参阅 Actor组件 的概述
时间轴可以实现从事件中播放基于时间的动画,这些事件可以沿着时间轴在关键帧处触发。可以使用时间轴来处理简单的非动画任务,例如开门、更改光源或对场景中的Actor执行其他以时间为中心的操纵。 这种方式与 关卡序列 相似,因为它们都提供要在时间轴上的关键帧之间内插的值,例如浮点、向量和颜色。
输入和输出
UTimelineComponents具有可以在原生代码中扩展的可靠方法,详情请参阅 UTimelineComponent API指南。 如果要查看有关如何在引擎中使用时间轴组件的示例,请点击下方的时间轴示例链接之一。
ExampleTimeline.h
/** 开始播放时间轴 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void Play();
/** 从头开始播放时间轴 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void PlayFromStart();
/** 开始反向播放时间轴 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void Reverse();
/** 从末尾开始反向播放时间轴 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void ReverseFromEnd();
/** 停止播放时间轴 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void Stop();
/** 设置要使用的新播放位置时间 */
UFUNCTION(BlueprintCallable, Category="Components|Timeline")
ENGINE_API void SetNewTime(float NewTime);
/** 用于处理时间轴"事件"的函数签名 */
FOnTimelineEvent OnUpdate();
FOnTimeLineEvent OnFinished();
FOnTimeLineEvent ExampleTimelineEventTrack();
/** 包含条目的结构体,每个条目针对一个浮点插值 */
FTimelineFloatTrack ExampleFloatTrack;
/** 包含条目的结构体,每个条目针对一个向量插值 */
FTimelineVectorTrack ExampleVectorTrack;
/** 用于指明时间轴播放方向的枚举数据 */
ETimelineDirection Direction;