插件中的 UActorComponent 派生类不会对函数调用做出反应

UActorComponent derived class in plugin is not reacting for function calls

本文关键字:函数调用 UActorComponent 派生 插件      更新时间:2023-10-16

所以我在虚幻引擎中创建(4.15(的项目插件时遇到了一个小问题。因此,让我们分解一下。1.我创建了从UActor组件派生的MyClass,并且还有以下行:

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))

2.我已将该组件添加到我的游戏模式中。3.然后我尝试通过获取游戏模式从类内部调用任何函数,然后投射到 MyGameMode 并获取 MyClassComponent。4.当我尝试调用函数时,什么都没有发生。

我试图调试它,但它永远不会进入函数体,而是在函数之前和之后打印工作正常。我还必须说,当函数直接编译到项目中时,它们 100% 工作正常!

这是我如何声明函数的示例:

UFUNCTION(BlueprintCallable, Category = "MyClass|Test")
        void TestFunction();
void UMyClass::TestFunction()
{
    GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, "hello there");
}

如果还有其他我不知道的信息,请告诉我。

我的类声明

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 
class UMyClass : public UActorComponent 
{ 
GENERATED_BODY() 
public: 
UFUNCTION(BlueprintCallable, Category = "MyClass|Test") 
void TestFunction(); 
};

任何需要公开使用的类都需要导出其符号。

在UE插件中,这是通过YOURPLUGIN_API说明符实现的,其中YOURPLUGIN是插件的名称。

这反过来又被定义为导出时__declspec(dllexport)和使用插件时__declspec(dllimport)

因此,您的类定义应如下所示:

UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent)) 
class MYPLUGIN_API UMyClass : public UActorComponent 
{
    ...
}