从其他文件调用函数-在虚幻引擎上找不到标识符



我有一个名为HealthComponent和GamemodeBase的类,其中包含.cpp和.h文件。在GamemodeBase头文件中,我声明了void funtion HealthBar(float fHealth(。我想在HeatComponent实现文件中调用它,但我得到了未找到标识符的错误。我包括GamemodeBase.h,所以IMO这应该工作。

GameModeBase.h
public:
UFUNCTION(BlueprintImplementableEvent)
void HealthBar(float nHealth);
HealthComponent.cpp
#include "Game/MyGameModeBase.h"
...
if(PlayerGetDamage())
HealthBar(fHealth);

您需要对GameMode的引用才能在其上调用非静态函数。

如果HealthComponent连接到GameMode,您可以简单地将HealthComponent的所有者强制转换到GameMode。

AMyGameModeBase* GameMode = Cast<AMyGameModeBase>(GetOwner());
GameMode->HealthBar(fHealth);

或者,您可以通过World访问GameMode。

AMyGameModeBase* GameMode = GetWorld()->GetAuthGameMode<AMyGameModeBase>();
GameMode->HealthBar(fHealth);

我建议采用第二种方法,因为它比较通用。

此外,请记住,对于多人游戏,客户端上不存在GameMode。GameMode只存在于服务器上。

您需要使HealthBar成为一个静态函数并用GameModeBase::HealthBar((调用它,或者在HealthComponent中创建GameModeBase的对象并用object调用它。HealthBar((

最新更新