为什么委托构造函数不能按预期 UE4 工作

Why delegated constructor doesn't work as expected UE4

我在为游戏中的几种武器(例如 AK 47、M11 等)加载资产时遇到问题,这里的问题是我创建了一个 c++ class 来完成这项工作将

    header
    
    UCLASS()
    AWeapon_core : public AActor
    {
        private: 
        USkeletalMeshComponent* m_skeletal_mesh;

        public:
        AWeapon_core(FString);
    
        protected:
        const FString mk_default_path;  
    };
    
    cpp
    
    AWeapon_core::AWeapon_core(FString _path)
    {
        m_skeletal_mesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("Weapon_mesh"));
    static ConstructorHelpers::FObjectFinder<USkeletalMesh> WEAPON_MESH(*(mk_weapon_mesh_path + _path));

    if (WEAPON_MESH.Succeeded())
        m_skeletal_mesh->SetSkeletalMesh(WEAPON_MESH.Object);
    }

还有武器,例如 AK-47

    header

class AAK47 : public AWeapon_core
{
    public:
    AAK47();
}

cpp

AAK47::AAK47() : AWeapon_core("The path of the AK47 mesh file")
{
}

对所有其他武器都做了同样的操作,但它使用相同的网格创建,这里可能有什么问题?

你知道你在这里做了什么吗?

static ConstructorHelpers::FObjectFinder<USkeletalMesh> 
                       WEAPON_MESH(*(mk_weapon_mesh_path + _path));

这是一个 STATIC LOCAL 变量。它被初始化一次。只有一次,因为 AWeapon_core::AWeapon_core() 函数只有一个实例。所有对该构造函数的后续调用都将使用已经初始化的值。