如何获取 UStaticMesh 阵列的组件

How to get components of UStaticMesh Array?

本文关键字:UStaticMesh 阵列 组件 获取 何获取      更新时间:2023-10-16

Hej,

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

错误

1 错误 C2338:GetComponents 的"T"模板参数必须是 派生自 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 函数。