hi!
I make ui with HUD and SlateWidget
I want when i click on button event send to blueprint
I made all like in slate tutorial part 1
And when i click on button unreal crash.
Here my hud header
#pragma once
#include "GameFramework/HUD.h"
#include "VJHUD.generated.h"
UCLASS()
class VJ_API AVJHUD : public AHUD
{
GENERATED_BODY()
virtual void PostInitializeComponents() override;
TSharedPtr<SWindow> SlateWin;
public:
UFUNCTION(BlueprintImplementableEvent, Category = "VJ")
void ButtonClicked();
UFUNCTION(BlueprintImplementableEvent, Category = "VJ")
void Button1Clicked();
};
here slate header
#pragma once
#include "Widgets/SCompoundWidget.h"
#include "VJHUD.h"
class VJ_API Svjui : public SCompoundWidget
{
public:
SLATE_BEGIN_ARGS(Svjui)
{}
SLATE_ARGUMENT(TWeakObjectPtr<class AVJHUD>, VJHUD)
SLATE_END_ARGS()
void Construct(const FArguments& InArgs);
FReply ButtonClicked();
FReply Button1Clicked();
TWeakObjectPtr<class AVJHUD> VJHUD;
};
and slate cpp
#include "vj.h"
#include "Svjui.h"
#include "SlateOptMacros.h"
#define LOCTEXT_NAMESPACE "vjui"
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Svjui::Construct(const FArguments& InArgs)
{
VJHUD = InArgs._VJHUD;
ChildSlot
.VAlign(VAlign_Fill)
.HAlign(HAlign_Fill)
SNew(SVerticalBox)
+ SVerticalBox::Slot().HAlign(HAlign_Center)
SNew(STextBlock)
.ShadowColorAndOpacity(FLinearColor::Black)
.ColorAndOpacity(FLinearColor::White)
.ShadowOffset(FIntPoint(-1, 1))
.Font(FSlateFontInfo("Veranda", 16))
.Text(LOCTEXT("Title", "VJ controls!"))
]
+ SVerticalBox::Slot().HAlign(HAlign_Fill)
SNew(SButton)
.Text(LOCTEXT("button", "Button"))
.OnClicked(this, &Svjui::ButtonClicked)
]
+ SVerticalBox::Slot().HAlign(HAlign_Fill)
SNew(SButton)
.Text(LOCTEXT("button1", "Button1"))
.OnClicked(this, &Svjui::Button1Clicked)
]
+ SVerticalBox::Slot().HAlign(HAlign_Fill)
SNew(SButton)
.Text(LOCTEXT("button2", "Button2"))
]
];
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FReply Svjui::ButtonClicked()
{
/*
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Yellow, TEXT("0"));
}
*/
VJHUD->ButtonClicked();
return FReply::Handled();
}
FReply Svjui::Button1Clicked()
{
/*if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Yellow, TEXT("1"));
}
*/
VJHUD->Button1Clicked();
return FReply::Handled();
}
#undef LOCTEXT_NAMESPACE
And crash log
LoginId:e918ef2449fb1aaae7171aabe0c65362
EpicAccountId:e400886435fe445f82d0d3d16e225617
Access violation - code c0000005 (first/second chance not available)
UE4Editor_CoreUObject
UE4Editor_vj_1516!AVJHUD::ButtonClicked()
UE4Editor_vj_1516!Svjui::ButtonClicked() [c:\users
oobusdeer\yandexdisk\myproj\unreal\vj\source\vj\svjui.cpp:59]
UE4Editor_vj_1516!TMemberFunctionCaller<Svjui,FReply (__cdecl Svjui::*)(void) __ptr64>::operator()<>() [c:\program files\epic games\ue_4.15\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:165]
UE4Editor_vj_1516!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<Svjui,FReply (__cdecl Svjui::*)(void) __ptr64> >() [c:\program files\epic games\ue_4.15\engine\source\runtime\core\public\delegates uple.h:134]
UE4Editor_vj_1516!TBaseSPMethodDelegateInstance<0,Svjui,0,FReply __cdecl(void)>::Execute() [c:\program files\epic games\ue_4.15\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:327]
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Slate
UE4Editor_Core
UE4Editor_Core
UE4Editor_Core
UE4Editor_Core
user32
user32
UE4Editor_Core
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
kernel32
ntdll
UE version 4.15.1