- 获取所有骨骼mesh
- 获取其上的所有材质,并创建动态材质方便修改
直接上代码
this->GetComponents<USkeletalMeshComponent>(meshes,true);
UE_LOG(LogTemp, Warning, TEXT("meshes count : %d"), meshes.Num());
for (auto mesh : meshes)
{
auto ms = mesh->GetMaterials();
for (int i = 0; i < ms.Num(); ++i)
{
//如果是动态材质直接添加
if (ms[i]->IsA(UMaterialInstanceDynamic::StaticClass())) {
materials.Add(Cast<UMaterialInstanceDynamic>(ms[i]));
} else {
//不是则创建动态材质
UMaterialInstanceDynamic* md = UMaterialInstanceDynamic::Create(ms[i], this);
mesh->SetMaterial(i,md);
materials.Add(md);
}
}
}
UE_LOG(LogTemp, Warning, TEXT("materials count : %d"), materials.Num());
dasd