如何获取 UStaticMesh 数组的组件?

How to get components of UStaticMesh Array?

他,

在下面的代码中,我试图获取 UStaticMesh 数组的组件,但出现如下错误。

Error 1 error C2338: 'T' template parameter to GetComponents must be derived from ActorComponent

在 .h 文件中

UPROPERTY()
        TArray<UStaticMeshComponent*> StaticMeshComponent;
UPROPERTY()
        TArray<UStaticMesh*> StaticMesh;

在 .CPP 文件中

StaticMeshComponent = TArray<UStaticMeshComponent*>();
StaticMeshtemp = TArray<UStaticMesh*>();

for (int32 i = 0; i < 3; i++)
{
    GetComponents<UStaticMeshComponent>(StaticMeshComponent);
    StaticMeshComponent[i] = CreateDefaultSubobject<UStaticMeshComponent>(temp);

    GetComponents<UStaticMesh>(StaticMesh);
    StaticMesh[i] = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(), NULL, *SMPath));

是否有其他函数或方法可以获取 UStaticMesh 数组的组件???

我认为这不是必需的:

StaticMeshComponent = TArray<UStaticMeshComponent*>();
StaticMeshtemp = TArray<UStaticMesh*>();

两个数组都在 运行 构造函数之前初始化。

问题:

这段代码可以:

 GetComponents<UStaticMeshComponent>(StaticMeshComponent);
 StaticMeshComponent[i] = CreateDefaultSubobject<UStaticMeshComponent>(temp);

StaticMeshComponent 派生自 ActorComponent UE Doc.

这是错误的:

 GetComponents<UStaticMesh>(StaticMesh);

因为您可以在 UE Doc StaticMesh 中找到,StaticMesh 不是从 ActorComponent 派生的。

解法:

您只需在通过 CreateDefaultSubobject<...> 创建的每个 StaticMeshComponent 上调用 SetStaticMesh 函数即可。