UChildActorComponent的ChildActorClass中的访问函数

Access Function within ChildActorClass of UChildActorComponent

本文关键字:函数 访问 ChildActorClass UChildActorComponent      更新时间:2023-10-16

好的,所以在UE4上,我正在尝试制作一个UChildActorComponent作为玩家的武器。但是当我去调用 APlayerWeapon 类中的函数时,它说:

错误:在"UChildActorComponent"中没有名为"射击"的成员

这是我用来初始化武器的代码:

void ABaseCharacter::CreatePlayerWeapon()
{
//Create the weapon actor as a UChildActorComponent
Weapon = CreateDefaultSubobject<UChildActorComponent>(TEXT("PlayerWeapon"));
Weapon->SetChildActorClass(WeaponClass);
Weapon->CreateChildActor();
//Attach it at the socket called "GunSocket" that I created on the right hand
Weapon->SetupAttachment(GetMesh(), FName("GunSocket"));
}

然后在 SetupPlayerInputComponent 函数中,我使用它来尝试将"Shoot(("绑定到空格键(在游戏设置中设置为输入(:

InputComponent->BindAction("Shoot", IE_Pressed, this, Weapon->Shoot());

以下是 ABaseCharacter 头文件中的相关代码行:

UPROPERTY(VisibleDefaultsOnly)
class UChildActorComponent* Weapon;

UPROPERTY(VisibleAnywhere, Category = "Base Character")
TSubclassOf<class APlayerWeapon> WeaponClass;

然后是 APlayerWeapon 类的相关代码行:

void APlayerWeapon::Shoot()
{
UE_LOG(LogTemp, Error, TEXT("Shooting"));
}

TLDR;如果武器当前是 ChildActorComponent,如何从 APlayerWeapon 访问 Shoot(( 函数?

了解如何解决此问题。你只需要得到儿童演员,然后投到儿童演员班。然后,您就可以调用该函数了。

((APlayerWeapon *)Weapon->GetChildActor())->Shoot();