【发布时间】:2020-07-18 01:15:02
【问题描述】:
我目前在尝试使用 tick 来决定是否应该根据成员变量布尔值做某事时遇到问题。
目前,我的 Player Character 类上有一个 BindAction,当按下给定键时,将我的成员变量 bTriggerPulled 的值设置为 True:
void AShooterCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAction("HandleTrigger", IE_Pressed, this, &AShooterCharacter::PullTrigger);
}
void AShooterCharacter::PullTrigger()
{
if(GEngine != nullptr)
{
GEngine->AddOnScreenDebugMessage(1, 2.f, FColor::Yellow, TEXT("Trigger is pressed"));
}
bTriggerPulled = true;
}
在我的 Tick() 函数中,我正在检查 bTriggerPulled 以决定是否将某些内容打印到控制台日志:
void AShooterCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if(bTriggerPulled)
{
UE_LOG(LogTemp, Warning, TEXT("Trigger"));
}
}
问题在于,当调用 Tick() 时,bTriggerPulled 变量总是被设置回 false。我没有为该值被覆盖的地方提供资金,并且在检查该值以搜索其所有用途时,仅显示这两个地方。
我已经删除了 /Saved 和 /Binaries 和 /Intermediate 文件夹以生成新的解决方案,但它并没有解决我的问题。
我已经检查了成员变量的所有用法,但它没有在任何地方设置为 false。
【问题讨论】:
-
您没有显示声明和定义
bTriggerPulled变量的确切方式和位置,但从您显示的屏幕截图来看,似乎bTriggerPulled未初始化。检查未初始化的变量,如AShooterCharacter::Tick(),是未定义的行为。
标签: c++ unreal-engine4