第一种方式:
1、首先加载材质,代码如下:
UMaterialInterface* Material = LoadObject<UMaterialInterface>(nullptr, TEXT("Material'/Game/Materials/ColorMaterial.ColorMaterial'"));
2、然后调用CreateDynamicMaterialInstance创建静态材质实例,如下:
UMaterialInstance * DynamicMaterial = UKismetMaterialLibrary::CreateDynamicMaterialInstance(GetWorld(), Material);
3、最后设置材质,如:
XXXXX->SetMaterial(0, DynamicMaterial);
第二种方式:
首先加载材质,如:
static ConstructorHelpers::FObjectFinder<UMaterialInstance> MaterialObj(TEXT("/Game/Materials/ColorMaterial.ColorMaterial"));
// DynamicMaterial = MaterialObj.Object;//可以赋值保存下来
直接设置材质,
XXXXX->SetMaterial(0, MaterialObj.Object);
第三种方式:
首先加载材质,如:
static ConstructorHelpers::FObjectFinder<UMaterialInstance> MaterialObj(TEXT("/Game/Materials/ColorMaterial.ColorMaterial"));
然后使用CreateDynamicMaterialInstance创建材质实例,如:
UMaterialInstance * DynamicMaterial = UKismetMaterialLibrary::CreateDynamicMaterialInstance(GetWorld(), MaterialObj.Object);
最后设置材质,给component设置材质实例,如:
XXXXX->SetMaterial(0, DynamicMaterial);
如果多个材质进行切换,可以保存不同的实例进行动态切换材质
高级技术交流群: 769397359