UE4 c++ TimeLine

在.h中:

声明TimeLine和CurveFloat:

//声明一个TimeLine
	FTimeline GroundThornFirstUpTimeLine;

//声明TimeLine的CurveFloat(也即函数曲线)
	UPROPERTY(BlueprintReadWrite, EditAnywhere)
		UCurveFloat* FirstUpTimeLineCurve;

在蓝图中创建一个CurveFloat函数曲线

选择CurveFloat

配置好曲线

并在声明类的蓝图中指定该曲线

 

在BeginPlay中:

声明委托,和TimeLine里执行的函数绑定,这里Text里面是函数的名称,注意这个GroundThornFirstUpFunction函数包含参数float DeltaTime,拿到DeltaTime,在这个函数中通过DeltaTime和位置或旋转相乘来实现渐变效果,也可用Lerp传入DeltaTime,把初始和最终信息传入即可

FOnTimelineFloatStatic FirstUpTimeLineCallBack;
FirstUpTimeLineCallBack.BindUFunction(this, TEXT("GroundThornFirstUpFunction"));

再将TimeLine和委托函数、函数曲线绑定

GroundThornFirstUpTimeLine.AddInterpFloat(FirstUpTimeLineCurve, FirstUpTimeLineCallBack);

 

在Tick中:

需要让TimeLine获取DeltaTime

GroundThornFirstUpTimeLine.TickTimeline(DeltaTime);

 

在需要调用TimeLine的时候:

GroundThornFirstUpTimeLine.PlayFromStart();

调用TimeLine的PlayFromStart方法,会自动执行委托所绑定的函数

 

当TimeLine执行完毕该怎么做?

调用TimeLine的SetTimeLineFinishedFunc方法,TimeLine执行完跳转到GroundThornDownFinishedFunction函数中

FOnTimelineEventStatic DownTimeLineEvent;
DownTimeLineEvent.BindUFunction(this, TEXT("GroundThornDownFinishedFunction"));
GroundThornFirstUpTimeLine.SetTimelineFinishedFunc(DownTimeLineEvent);

 

这里讲解下:

SetTimeLineFinishedFunc的参数是个委托,源码中是这样声明的

void FTimeline::SetTimelineFinishedFunc(FOnTimelineEventStatic NewTimelineFinishedFunc)
{
	TimelineFinishFuncStatic = NewTimelineFinishedFunc;
}

源码中该参数委托是这样声明的

/** Static version of delegate to handle a timeline 'event' */
DECLARE_DELEGATE( FOnTimelineEventStatic );
/** Static version of timeline delegate for a float track */
DECLARE_DELEGATE_OneParam( FOnTimelineFloatStatic, float );
/** Static version of timeline delegate for a vector track */
DECLARE_DELEGATE_OneParam( FOnTimelineVectorStatic, FVector );
/** Static version of timeline delegate for a linear color track */
DECLARE_DELEGATE_OneParam( FOnTimelineLinearColorStatic, FLinearColor );

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值