I have a few UPROPERYs setup for UMaterialInstance* variables. I’m randomly picking one and wanting to assign that material instance to an actor’s static mesh.
I am able to get the static mesh but for some reason the material isn’t changing.
Below is in the header file:
// Possible balloon colors ----
UPROPERTY(EditAnywhere)
UMaterialInstance* MaterialRed = nullptr;
UPROPERTY(EditAnywhere)
UMaterialInstance* MaterialGreen = nullptr;
UPROPERTY(EditAnywhere)
UMaterialInstance* MaterialYellow = nullptr;
UPROPERTY(EditAnywhere)
UMaterialInstance* MaterialPurple = nullptr;
Below is in the cpp file:
// Randomize balloon color
float MaterialRnd = FMath::RandRange(0, 3);
UMaterialInstance* RandomMaterial = nullptr;
FString Color = "Purple";
if(!MaterialRed || !MaterialYellow || !MaterialGreen || !MaterialPurple){
UE_LOG(LogTemp, Error, TEXT("Balloon material references not valid."))
}
else{
UE_LOG(LogTemp, Error, TEXT("Balloon material rnd color var = %s."), *(FString::SanitizeFloat(MaterialRnd)))
}
if(MaterialRnd == 0){
RandomMaterial = MaterialRed;
Color = "Red";
}
else if(MaterialRnd == 1){
RandomMaterial = MaterialYellow;
Color = "Yellow";
}
else if(MaterialRnd == 2){
RandomMaterial = MaterialGreen;
Color = "Green";
}
else{
RandomMaterial = MaterialPurple;
}
UStaticMesh* BalloonMesh = GetBalloonStaticMesh();
if(BalloonMesh){
BalloonMesh->SetMaterial(0, RandomMaterial);
BalloonMaterial = RandomMaterial;
UE_LOG(LogTemp, Warning, TEXT("Balloon material set to: %s"), *(Color))
}