蓝图画的Widget在c++运行时出现2s,可重复出现

本文介绍了一种在 Unreal Engine 中实现能量不足提示界面的方法。通过 C++ 编写界面显示与销毁逻辑,并利用蓝图调用 PlayerController 的方法传递参数,实现了界面定时显示与自动消失的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-我做的是一个提示界面,每次能量不足屏幕就出现提示,提示显示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();
}

2.在蓝图中画widget,在另一个界面中通过调用PlayerController中的函数给c++传参

①添加UserWidget变量进行存储

这里写图片描述

②展示界面使用如下方法:

这里写图片描述

③然后将WidgetToDisplay作为参数传给PlayerController中刚写的方法
在Unreal Engine 4UE4)中,你可以通过以下步骤实现派生自C++类的蓝图Widget: 1. **创建C++类**: - 首先,你需要创建一个继承自`UUserWidget`的C++类。例如,假设我们创建一个名为`MyCustomWidget`的类。 ```cpp // MyCustomWidget.h #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "MyCustomWidget.generated.h" UCLASS() class YOURPROJECT_API UMyCustomWidget : public UUserWidget { GENERATED_BODY() public: // Add your custom functions and variables here }; ``` 2. **编译项目**: - 确保你的项目已经成功编译,这样UE4才能识别到新的C++类。 3. **创建蓝图Widget**: - 打开UE4编辑器,右键点击内容浏览器中的空白区域,选择“用户界面” -> “Widget Blueprint”。 - 在弹出的对话框中,选择刚才创建的C++类`MyCustomWidget`作为父类。 - 命名并保存这个蓝图Widget,比如命名为`BP_MyCustomWidget`。 4. **编辑蓝图Widget**: - 双击新创建的蓝图Widget以打开它。 - 你可以在蓝图编辑器中添加UI元素、设置属性和绑定事件等。 5. **使用蓝图Widget**: - 现在你可以在其他蓝图或代码中使用这个自定义的蓝图Widget了。例如,你可以在另一个Widget中通过拖放的方式将`BP_MyCustomWidget`添加到设计视图中,或者在代码中动态创建它。 ### 示例代码 假设你在C++类中添加了一个自定义函数: ```cpp // MyCustomWidget.h UFUNCTION(BlueprintCallable, Category = "Custom") void CustomFunction(); ``` 在蓝图中调用这个函数: - 打开`BP_MyCustomWidget`的蓝图编辑器。 - 在事件图表中,你可以找到并调用`CustomFunction`。 ### 相关问题 1. **如何为C++类添加自定义属性?** 2. **如何在蓝图中访问C++类的自定义属性?** 3. **如何在蓝图中处理C++类的自定义事件?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值