0

嘿嘿,

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

错误 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 Array 的组件???

4

1 回答 1

0

我相信这不是必需的:

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函数。

于 2015-04-16T15:08:24.720 回答