虚幻引擎4 CPP:&x27;共享';:不是';MyModule'; 我是C++中的NeWBEE,试图从UNITY3D迁移到虚幻引擎4。现在,我正试图编写我的第一个插件(UI插件和工具是我工作中非常重要的一部分),并坚持将AddOnClicked事件添加到SButton 我从创建独立窗口插件开始,添加了一个按钮 TSharedRef<SDockTab> FAssistLibModule::OnSpawnPluginTab(const FSpawnTabArgs& SpawnTabArgs) { FText WidgetText = FText::Format( LOCTEXT("WindowWidgetText", "Add code 111 222 to {0} in {1} to override this window's contents"), FText::FromString(TEXT("FAssistLibModule::OnSpawnPluginTab")), FText::FromString(TEXT("AssistLib.cpp")) ); FText ButtonLabel = FText::FromString("Button?"); return SNew(SDockTab) .TabRole(ETabRole::NomadTab) [ // Put your tab content here! SNew(SVerticalBox) +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(STextBlock) .Text(WidgetText) ] +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(SButton) .Text(ButtonLabel) .OnClicked(this, &FAssistLibModule::CollectBlueprintsButtonClicked) ] ];} TSharedRef FAssistLibModule::OnSpawnPluginTab(const FSpawnTabArgs&spawhtabargs){ FText WIDGETEXT=FText::Format( LOCTEXT(“WindowWidgetText”,“将代码111 222添加到{1}中的{0}以覆盖此窗口的内容”), FText::FromString(TEXT(“fassislibmodule::OnSpawnPluginTab”), FText::FromString(文本(“AssistLib.cpp”)) ); FText ButtonLabel=FText::FromString(“按钮”); 返回SNew(SDockTab) .TabRole(ETabRole::NomadTab) [ //把你的标签内容放在这里! SNew(SVerticalBox) +SVerticalBox::Slot().VAlign(VAlign_Top) [ 新南威尔士州(STextBlock) .Text(WidgetText) ] +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(按钮) .Text(按钮标签) .OnClicked(this,&FAssistLibModule::CollectBlueprintsButtonClicked) ] ];}

虚幻引擎4 CPP:&x27;共享';:不是';MyModule'; 我是C++中的NeWBEE,试图从UNITY3D迁移到虚幻引擎4。现在,我正试图编写我的第一个插件(UI插件和工具是我工作中非常重要的一部分),并坚持将AddOnClicked事件添加到SButton 我从创建独立窗口插件开始,添加了一个按钮 TSharedRef<SDockTab> FAssistLibModule::OnSpawnPluginTab(const FSpawnTabArgs& SpawnTabArgs) { FText WidgetText = FText::Format( LOCTEXT("WindowWidgetText", "Add code 111 222 to {0} in {1} to override this window's contents"), FText::FromString(TEXT("FAssistLibModule::OnSpawnPluginTab")), FText::FromString(TEXT("AssistLib.cpp")) ); FText ButtonLabel = FText::FromString("Button?"); return SNew(SDockTab) .TabRole(ETabRole::NomadTab) [ // Put your tab content here! SNew(SVerticalBox) +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(STextBlock) .Text(WidgetText) ] +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(SButton) .Text(ButtonLabel) .OnClicked(this, &FAssistLibModule::CollectBlueprintsButtonClicked) ] ];} TSharedRef FAssistLibModule::OnSpawnPluginTab(const FSpawnTabArgs&spawhtabargs){ FText WIDGETEXT=FText::Format( LOCTEXT(“WindowWidgetText”,“将代码111 222添加到{1}中的{0}以覆盖此窗口的内容”), FText::FromString(TEXT(“fassislibmodule::OnSpawnPluginTab”), FText::FromString(文本(“AssistLib.cpp”)) ); FText ButtonLabel=FText::FromString(“按钮”); 返回SNew(SDockTab) .TabRole(ETabRole::NomadTab) [ //把你的标签内容放在这里! SNew(SVerticalBox) +SVerticalBox::Slot().VAlign(VAlign_Top) [ 新南威尔士州(STextBlock) .Text(WidgetText) ] +SVerticalBox::Slot().VAlign(VAlign_Top) [ SNew(按钮) .Text(按钮标签) .OnClicked(this,&FAssistLibModule::CollectBlueprintsButtonClicked) ] ];},c++,unreal-engine4,C++,Unreal Engine4,编译后,请告诉我这个错误 Info Compiling game modules for hot reload Info Performing 2 actions (4 in parallel) Info Module.MyModule.cpp Info c:\program files (x86)\epic games\4.13\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl(181): error C

编译后,请告诉我这个错误

Info Compiling game modules for hot reload
Info Performing 2 actions (4 in parallel)
Info Module.MyModule.cpp
Info c:\program files (x86)\epic games\4.13\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl(181): error C2039: 'AsShared': is not a member of 'FMyModuleModule'
Error D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Source\MyModule\Public\MyModule.h(10) : note: see declaration of 'FMyModuleModule'
Info C:\Program Files (x86)\Epic Games\4.13\Engine\Source\Runtime\Slate\Public\Widgets\Input\SButton.h(54): note: see reference to function template instantiation 'TBaseDelegate<FReply> TBaseDelegate<FReply>::CreateSP<UserClass,>(UserClass *,FReply (__cdecl FMyModuleModule::* )(void))' being compiled
Info         with
Info         [
Info             UserClass=FMyModuleModule
Info         ]
Info C:\Program Files (x86)\Epic Games\4.13\Engine\Source\Runtime\Slate\Public\Widgets\Input\SButton.h(54): note: see reference to function template instantiation 'TBaseDelegate<FReply> TBaseDelegate<FReply>::CreateSP<UserClass,>(UserClass *,FReply (__cdecl FMyModuleModule::* )(void))' being compiled
Info         with
Info         [
Info             UserClass=FMyModuleModule
Info         ]
Error D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Source\MyModule\Private\MyModule.cpp(89) : note: see reference to function template instantiation 'SButton::FArguments::WidgetArgsType &SButton::FArguments::OnClicked<FMyModuleModule>(UserClass *,FReply (__cdecl FMyModuleModule::* )(void))' being compiled
Info         with
Info         [
Info             UserClass=FMyModuleModule
Info         ]
Info c:\program files (x86)\epic games\4.13\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl(181): error C2672: 'StaticCastSharedRef': no matching overloaded function found
Info c:\program files (x86)\epic games\4.13\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl(181): error C2672: 'TBaseDelegate<FReply>::CreateSP': no matching overloaded function found
Info ERROR: UBT ERROR: Failed to produce item: D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Binaries\Win64\UE4Editor-MyModule-6676.dll
Info Total build time: 46.77 seconds
Info编译游戏模块进行热加载
信息执行2项操作(4项并行)
Info Module.MyModule.cpp
信息c:\program files(x86)\epic games\4.13\engine\source\runtime\core\public\DelegateSignatureImpl.inl(181):错误C2039:“AsShared”:不是“FmyModule”的成员
错误D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Source\MyModule\Public\MyModule.h(10):注意:请参阅“FMyModuleModule”的声明
信息C:\Program Files(x86)\Epic Games\4.13\Engine\Source\Runtime\Slate\Public\Widgets\Input\SButton.h(54):注意:请参阅正在编译的函数模板实例化“TBaseDelegate TBaseDelegate::CreateSP(UserClass*,FReply(u cdecl FMyModuleModule::*)(void))”的参考
信息与
信息[
Info UserClass=FMyModuleModule
信息]
信息C:\Program Files(x86)\Epic Games\4.13\Engine\Source\Runtime\Slate\Public\Widgets\Input\SButton.h(54):注意:请参阅正在编译的函数模板实例化“TBaseDelegate TBaseDelegate::CreateSP(UserClass*,FReply(u cdecl FMyModuleModule::*)(void))”的参考
信息与
信息[
Info UserClass=FMyModuleModule
信息]
错误D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Source\MyModule\Private\MyModule.cpp(89):注意:请参阅正在编译的函数模板实例化“SButton::FArguments::WidgetArgsType&SButton::FArguments::OnClicked(UserClass*,FReply(u cdecl FMyModuleModule::*)(void))”的参考
信息与
信息[
Info UserClass=FMyModuleModule
信息]
信息c:\program files(x86)\epic games\4.13\engine\source\runtime\core\public\DelegateSignatureImpl.inl(181):错误C2672:“StaticCastSharedRef”:未找到匹配的重载函数
信息c:\program files(x86)\epic games\4.13\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl(181):错误C2672:“TBaseDelegate::CreateSP”:未找到匹配的重载函数
信息错误:UBT错误:未能生成项:D:\dev\repos\assist-lib-ue4\Plugins\MyModule\Binaries\Win64\UE4Editor-MyModule-6676.dll
信息总生成时间:46.77秒

请帮忙,我不明白发生了什么,谢谢你的建议

fassislibmodule看起来像是从
IModuleInterface
派生出来的,不是一个共享指针,因此您必须为单击的
指定绑定方法

我认为替换是正确的

OnClicked(这个,&fassislibmodule::CollectBlueprintsButtonClicked)

OnClicked(FOnClicked::CreateRaw(this,&fassislibmodule::CollectBlueprintsButtonClicked))

OnClicked_Raw(这个,&fassislibmodule::CollectBlueprintsButtonClicked)


检查这个线程,我认为它很有用:

fassislibmodule
看起来像是从
IModuleInterface
派生出来的,并且不是一个共享指针,因此您必须为
OnClicked
指定绑定方法

我认为替换是正确的

OnClicked(这个,&fassislibmodule::CollectBlueprintsButtonClicked)

OnClicked(FOnClicked::CreateRaw(this,&fassislibmodule::CollectBlueprintsButtonClicked))

OnClicked_Raw(这个,&fassislibmodule::CollectBlueprintsButtonClicked)

检查此线程,我认为它很有用: