UE4 C++ 在初始化后获取对 HUDClass 的引用
UE4 C++ Getting a reference to HUDClass after it has been initialized
在我的游戏模式基础中 class 我创建了一个分配给 HUDClass 的对象。 HUD 工作正常,但我似乎无法访问它的任何需要发回代码的成员函数。在这一点上,我已经尝试了一切,但完全被卡住了。似乎无论我做什么,指向对象的指针似乎都变成了 NULL。我用的是UE4.25.3.
void AGameModeBase::InitGame() {
HUDClass = AKeyHUD::StaticClass();
}
以下是我尝试过的一些方法,除了访问其不需要内部变量的成员外,它们都不起作用。我包括了最有希望的两个。无论我尝试什么语句 if (defaultHUD)
总是 returns false 如果我尝试访问它它会使 UE4 崩溃。
defaultHUD = HUDClass->GetClass();
defaultHUD = Cast<AKeyHUD>(HUDClass);
如果有人能帮助我,将不胜感激。
我想出了一个解决方案,可以从游戏模式基础 class 中获取对任何演员对象和 HUD 的引用,这在 Unreal Engine 4.25 中使用 C++ 有效。使用将要初始化的位置初始化 HUDClass
和 DefaultPawnClass
后(我个人将它们放在 Game Mode Base Constructor 中):
HUDClass = AMyHUD::StaticClass();
DefaultPawnClass = APlayerPawn::StaticClass();
然后为了获取对 HUD 的引用,假设您的 HUD Class 名称为 AMyHUD
并且可以从许多地方调用,包括 StartPlay()
:
defaultHUD = Cast<AMyHUD>(UGameplayStatics::GetPlayerController(this,0)->GetHUD());
这样做是获取附加到第一个玩家控制器的 HUD,尽管更改数字会改变从哪个玩家控制器获取参考。
现在要获取对 class 的任何演员的引用,以下代码有效,也可放置在 StartPlay()
中:
TArray<AActor*> FoundPawns;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerPawn::StaticClass(), FoundPawns);
defaultPawn = Cast<APlayerPawn>(FoundPawns[0]);
defaultPawn
和 defaultHUD
都可以直接调用和使用,例如:
defaultPawn->YourActorsFunction();
我希望这有助于节省人们的时间并且很有用。
在我的游戏模式基础中 class 我创建了一个分配给 HUDClass 的对象。 HUD 工作正常,但我似乎无法访问它的任何需要发回代码的成员函数。在这一点上,我已经尝试了一切,但完全被卡住了。似乎无论我做什么,指向对象的指针似乎都变成了 NULL。我用的是UE4.25.3.
void AGameModeBase::InitGame() {
HUDClass = AKeyHUD::StaticClass();
}
以下是我尝试过的一些方法,除了访问其不需要内部变量的成员外,它们都不起作用。我包括了最有希望的两个。无论我尝试什么语句 if (defaultHUD)
总是 returns false 如果我尝试访问它它会使 UE4 崩溃。
defaultHUD = HUDClass->GetClass();
defaultHUD = Cast<AKeyHUD>(HUDClass);
如果有人能帮助我,将不胜感激。
我想出了一个解决方案,可以从游戏模式基础 class 中获取对任何演员对象和 HUD 的引用,这在 Unreal Engine 4.25 中使用 C++ 有效。使用将要初始化的位置初始化 HUDClass
和 DefaultPawnClass
后(我个人将它们放在 Game Mode Base Constructor 中):
HUDClass = AMyHUD::StaticClass();
DefaultPawnClass = APlayerPawn::StaticClass();
然后为了获取对 HUD 的引用,假设您的 HUD Class 名称为 AMyHUD
并且可以从许多地方调用,包括 StartPlay()
:
defaultHUD = Cast<AMyHUD>(UGameplayStatics::GetPlayerController(this,0)->GetHUD());
这样做是获取附加到第一个玩家控制器的 HUD,尽管更改数字会改变从哪个玩家控制器获取参考。
现在要获取对 class 的任何演员的引用,以下代码有效,也可放置在 StartPlay()
中:
TArray<AActor*> FoundPawns;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), APlayerPawn::StaticClass(), FoundPawns);
defaultPawn = Cast<APlayerPawn>(FoundPawns[0]);
defaultPawn
和 defaultHUD
都可以直接调用和使用,例如:
defaultPawn->YourActorsFunction();
我希望这有助于节省人们的时间并且很有用。