ue5c++类里创建widget组件
时间: 2023-08-06 14:03:07 浏览: 137
在UE5中,可以在C++类中创建Widget组件,具体步骤如下:
1. 首先在UE5编辑器中创建一个新的C++类,该类继承自Actor或Pawn等类。
2. 在该类的头文件中添加以下内容:
```cpp
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
protected:
virtual void BeginPlay() override;
private:
UPROPERTY(EditAnywhere, Category = "MyWidget", meta = (AllowPrivateAccess = "true"))
TSubclassOf<class UUserWidget> MyWidgetClass;
UPROPERTY()
class UUserWidget* MyWidget;
};
```
3. 在源文件中实现构造函数和BeginPlay函数:
```cpp
#include "MyActor.h"
#include "Blueprint/UserWidget.h"
AMyActor::AMyActor()
{
PrimaryActorTick.bCanEverTick = false;
// 设置Widget类,这里使用自带的Widget组件作为例子
static ConstructorHelpers::FClassFinder<UUserWidget> WidgetClass(TEXT("/Game/UMG/ExampleWidget"));
if (WidgetClass.Succeeded())
{
MyWidgetClass = WidgetClass.Class;
}
}
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// 创建Widget组件
if (MyWidgetClass)
{
MyWidget = CreateWidget<UUserWidget>(GetWorld(), MyWidgetClass);
if (MyWidget)
{
MyWidget->AddToViewport();
}
}
}
```
在上面的代码中,我们首先在构造函数中获取Widget类的引用,然后在BeginPlay函数中使用CreateWidget函数创建Widget组件的实例,并将其添加到视口中。
4. 在UE5编辑器中可以设置该类的默认属性,例如,可以将该类默认的MyWidgetClass设置为自己的Widget类。
这样,我们就可以在C++类中创建Widget组件了。在使用时,只需要在UE5编辑器中将该类添加到场景中即可。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)