2015-04-15 2 views
0

Hej,Comment obtenir des composants de UStaticMesh Array?

Dans le code ci-dessous, j'essaie d'obtenir les composants de UStaticMesh Array, mais j'obtiens une erreur comme suit.

erreur 1 Erreur C2338: paramètre de modèle 'T' à getComponents doit être dérivé de ActorComponent

Dans le fichier .h

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

dans le fichier .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)); 

Y at-il une autre fonction ou méthode pour obtenir les composants ts de UStaticMesh Array ???

Répondre

0

Je crois que ce n'est pas necesarry:

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

Les deux tableaux sont initialisés avant constructeur en cours d'exécution.

Problème:

Ce code est OK:

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

StaticMeshComponent est dérivé de ActorComponent UE Doc.

Et cela est faux:

GetComponents<UStaticMesh>(StaticMesh); 

Parce que vous pouvez trouver dans UE Doc StaticMesh, StaticMesh ne dérive pas de ActorComponent.

Solution:

Tout ce que vous avez besoin est d'appeler la fonction SetStaticMesh sur chaque StaticMeshComponent que vous avez créé via CreateDefaultSubobject < ...>.

+0

Merci pour votre explication claire. J'ai une nouvelle logique pour résoudre ce problème. – manokar