Hello,
i am new to unreal engine and tried to make a widget class.
I made a blueprint out of the widget but i cant find the designer button.
Can any one show me how to open the designer?
I am using UE 4 Version:4.23.1
Widget.h is the base class without the designer. You need to derive from UserWidget.h to get the designer.
If you make a widget derived from Widget.h in C++ then you can still add it in another Widget Blueprint but you won’t get a designer to modify it.
but i am deriving from UUserWidget
header file:
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "Runtime/UMG/Public/UMG.h"
#include "PlayerUserWidget.generated.h"
/**
*
*/
UCLASS()
class LOST_API UPlayerUserWidget : public UUserWidget
{
GENERATED_BODY()
public:
UPlayerUserWidget(const FObjectInitializer& ObjectInitializer);
virtual void NativeConstruct() override;
void UpdateComboCount(int32 Value);
void ResetCombo();
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (BindWidget))
class UTextBlock* TXTCombo;
};
Hello,
i think you need to initialize it
virtual bool Initialize() override;
bool UPlayerUserWidget::Initialize()
{
bool bInit = Super::Initialize();
return bInit;
}
I have added it and it didn’t work
Any other advice?
Try to change this:
UCLASS() class LOST_API UPlayerUserWidget : public UUserWidget
To this:
UCLASS(BlueprintType, Blueprintable) class LOST_API UPlayerUserWidget : public UUserWidget
Also do not override functions if you just call their super functions as good practice.
That didn’t work as well
Can you tell me why ?
I also had this problem, I think it’s a known issue if you inherit the UserWidget from a C++ class.
What I do is:
- Create a UserWidget from your Content folder: Right click -> User Interface -> Widget Blueprint
- Create a C++ class inherit from UserWidget.
- Change the UserWidget blueprint Parent Class to your C++ class.
This is a little unnecessary overhead as it does nothing different from what the base class already does. So you can remove you Initialize() method.
The workaround does do the job thanks
But it is kinda weird they didn’t fix it.
i have a problem trying to create a custom widget.
i have this code.
static ConstructorHelpers::FClassFinder<UUserWidget> MenuClassFinder(TEXT("/Game/Blueprints/UI/WBP_Gameplay"));
if(!MenuClassFinder.Succeeded())
{
UE_LOG(LogTemp, Error, TEXT(" USGameplayWidget !UITmp.Succeeded() "));
return;
}
TSubclassOf<class UUserWidget> MenuClass = MenuClassFinder.Class;
USGameplayWidget* Menu = CreateWidget<USGameplayWidget>(this, MenuClass);
but i get the error
Severity Code Description Project File Line Suppression State
Error C2338 CreateWidget can only be used to create UserWidget instances. If creating a UWidget, use WidgetTree::ConstructWidget. CastleVersus C:\Program Files\Epic Games\UE_4.23\Engine\Source\Runtime\UMG\Public\Blueprint\UserWidget.h 1420
this is the code of my custom widget
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "SGameplayWidget.generated.h"
/**
*
*/
UCLASS()
class CASTLEVERSUS_API USGameplayWidget : public UUserWidget
{
GENERATED_BODY()
};
The error was because i missed to include USGameplayWidget.h and only added the forward declaration of the class