MyActor.h
UCLASS()
class FPS_API AMyActor: public AActor
{
GENERATED_BODY()
...
public:
UFUNCTION(NetMulticast, Reliable)
void MulticastRPCMyFunction();
...
}
MyActor.cpp
void AMyActor::MulticastRPCMyFunction()
{
UE_LOG(LogTemp, Log, TEXT("Message"));
}
当我编译我的项目时,我可以查看下面的错误消息。编译错误
*.gen.cpp.obj : error LNK2005: "public: void __cdecl *::MulticastRPCMyFunction(void)" (?MulticastRPCMyFunction@*@@QEAAXXZ) already defined in *.cpp.obj
对于网络函数(在您的情况下是NetMulticast
元数据(,您不会在Cpp文件中将函数命名为头文件,因为它是由UHT生成的(因此已经定义了关于它的链接器错误(。
在您的情况下,您的Cpp文件需要如下所示:
void AMyActor::MulticastRPCMyFunction_Implementation()
{
UE_LOG(LogTemp, Log, TEXT("Message"));
}
请注意函数名称中添加了_Implementation
。
如果您添加了WithValidation
元数据,那么您将需要在函数名称末尾添加_Validate
的另一个函数。