-我做的是一个提示界面,每次能量不足屏幕就出现提示,提示显示2s然后消失
1. 我是通过在蓝图中调用PlayerController中的方法进行传参的,具体步骤如下:
①在Controller的头文件中进行变量声明
UPROPERTY()
UUserWidget* WidgetToDisplay; //要展示的界面
bool BDestroy; //是否移除界面
FTimerHandle DelayTime;//时间处理
//界面显示函数
UFUNCTION(BlueprintCallable, Category = "UMG Game")
void DisplayYourWidget(UUserWidget* WidgetClass);
//移除窗口
void DestroyYourWidget();
②在c++添加相关头文件,写函数定义
//界面显示
void AMyPlayerController::DisplayYourWidget(UUserWidget * WidgetClass)
{
if (WidgetClass !=nullptr && BDestroy)
{
WidgetToDisplay= WidgetClass;
BDestroy = false; //设为false来确保对每次生成的widget只执行一次销毁
WidgetToDisplay->AddToViewport();
GetWorldTimerManager().SetTimer(DelayTime, this, &AMyPlayerController::DestroyYourWidget, 2.0f, true);//2s后执行销毁函数
}
}
void AMyPlayerController::DestroyYourWidget()
{
BDestroy = true; //已经被销毁,设为true,让下一次销毁可以正常执行
WidgetToDisplay->RemoveFromParent();
}