Switch between actor SkeletalMeshComponents, How?

Hi;
In my Actor class, I get the skel-mesh from my contents, using this code:

       static ConstructorHelpers::FObjectFinder<USkeletalMesh> Mesh**1**(TEXT("SkeletalMesh'/Game/Models/Pickups/SkeletalMesh/[COLOR=#daa520]Mesh1.Adze_Hammer_Head'[/COLOR]"));

Then I assigned it to the SkeletalMeshComponent:

  TheSkeletalMeshComponent->SetSkeletalMesh(Mesh**1**.Object);

Now, I want add more *SkeletalMeshComponents *and switch between them in Run-Time.
Something like this :



AInv_Melee::AInv_Melee()
{
    PrimaryActorTick.bCanEverTick = true;
    TheSkeletalMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("My Skeletal Mesh Component"));
    static ConstructorHelpers::FObjectFinder<USkeletalMesh> Mesh**1**(TEXT("SkeletalMesh'/Game/Models/Pickups/SkeletalMesh/Mesh1.Adze_Hammer_Head'"));
    static ConstructorHelpers::FObjectFinder<USkeletalMesh> Mesh**2**(TEXT("SkeletalMesh'/Game/Models/Pickups/SkeletalMesh/Mesh2.Adze_Hammer_Head'"));
}

void AInv_Melee::NextMesh()
{
    if (!bSwitch)
    {
         TheSkeletalMeshComponent->SetSkeletalMesh(Mesh**1**.Object);
    }
    else
   {
         TheSkeletalMeshComponent->SetSkeletalMesh(Mesh**2**.Object);
   }
}



But I can not use Mesh1 or Mesh2 variables in other functions.
To access these variables , I declare them in header file , but it doesn’t work and makes errors…

How could I assign several Skel-Mesh and switch between them in run-time?

Thanks for helping
MSD.

Give this a try :slight_smile:



UPROPERTY()
USkeletalMesh* NewMesh1;

UPROPERTY()
USkeletalMesh* NewMesh2;




AInv_Melee::AInv_Melee()
{
    PrimaryActorTick.bCanEverTick = true;
    TheSkeletalMeshComponent = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("My Skeletal Mesh Component"));

    static ConstructorHelpers::FObjectFinder<USkeletalMesh> Mesh1(TEXT("SkeletalMesh'/Game/Models/Pickups/SkeletalMesh/Mesh1.Adze_Hammer_Head'"));
    if(Mesh1.Object)
        NewMesh1 = Mesh1.Object;

    static ConstructorHelpers::FObjectFinder<USkeletalMesh> Mesh2(TEXT("SkeletalMesh'/Game/Models/Pickups/SkeletalMesh/Mesh2.Adze_Hammer_Head'"));
    if(Mesh3.Object)
        NewMesh2 = Mesh3.Object;
}

void AInv_Melee::NextMesh()
{
    if (!bSwitch)
    {
         TheSkeletalMeshComponent->SetSkeletalMesh(NewMesh1);
    }
    else
    {
         TheSkeletalMeshComponent->SetSkeletalMesh(NewMesh2);
    }
}


Thank you, it works fine…