UE4 c++ TimeLine

在.h中:

声明TimeLine和CurveFloat:

//声明一个TimeLine
	FTimeline GroundThornFirstUpTimeLine;

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

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

选择CurveFloat

配置好曲线

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

在BeginPlay中:

声明委托,和TimeLine里执行的函数绑定,这里Text里面是函数的名称

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 );

猜你喜欢

转载自blog.csdn.net/zhangxiaofan666/article/details/82502118