六一的部落格


关关难过关关过,前路漫漫亦灿灿。



使用定时器,定时器到期修改材质颜色参数


包含头文件

1#include "TimerManager.h"

定时器描述符

FTimerHandle

通过描述符初始化/停止定时器


添加数据成员

private

1FTimerHandle RandomColorTimer;
2float TimerRate = 3.0f;

添加函数成员

private

-
InitTimerRandomColor 初始化定时器描述符
OnTimerRandomColor 定时器到期回调函数
1void InitTimerRandomColor();
2void OnTimerRandomColor();

实现回调函数: 随机材质颜色

OnTimerFired

返回类型void,参数列表为空

 1void ASimpleGeometry::OnTimerRandomColor()
 2{
 3    const FLinearColor Color = FLinearColor::MakeRandomColor();
 4    if (!StaticMesh) return;
 5    UMaterialInstanceDynamic* Material = StaticMesh->CreateAndSetMaterialInstanceDynamic(0);
 6    if (Material)
 7    {
 8        Material->SetVectorParameterValue("Color", Color);
 9    }
10}

初始化定时器

-
AActor::GetWorldTimerManager 获取定时器管理对象的引用
FTimerManager::SetTimer 初始化定时器
1GetWorldTimerManager().SetTimer(RandomColorTimer, this,
2                                &ASimpleGeometry::OnTimerRandomColor,
3                                TimerRate, true);

定时器: 让材质颜色随机变化


使用定时器,定时器到期修改材质颜色参数


包含头文件

1#include "TimerManager.h"

定时器描述符

FTimerHandle

通过描述符初始化/停止定时器


添加数据成员

private

1FTimerHandle RandomColorTimer;
2float TimerRate = 3.0f;

添加函数成员

private

-
InitTimerRandomColor 初始化定时器描述符
OnTimerRandomColor 定时器到期回调函数
1void InitTimerRandomColor();
2void OnTimerRandomColor();

实现回调函数: 随机材质颜色

OnTimerFired

返回类型void,参数列表为空

 1void ASimpleGeometry::OnTimerRandomColor()
 2{
 3    const FLinearColor Color = FLinearColor::MakeRandomColor();
 4    if (!StaticMesh) return;
 5    UMaterialInstanceDynamic* Material = StaticMesh->CreateAndSetMaterialInstanceDynamic(0);
 6    if (Material)
 7    {
 8        Material->SetVectorParameterValue("Color", Color);
 9    }
10}

初始化定时器

-
AActor::GetWorldTimerManager 获取定时器管理对象的引用
FTimerManager::SetTimer 初始化定时器
1GetWorldTimerManager().SetTimer(RandomColorTimer, this,
2                                &ASimpleGeometry::OnTimerRandomColor,
3                                TimerRate, true);