【问题标题】:Unreal Engine 4 C++ Change StaticMeshComponent of AStaticMeshActorUnreal Engine 4 C++ 更改 AStaticMeshActor 的 StaticMeshComponent
【发布时间】:2016-06-22 06:20:26
【问题描述】:

我正在尝试更改每个静态网格体 Actor 的材质属性。我知道我需要遍历每个 Actor 并找到静态网格体组件。但是,我无法正确修改材质。

这是我的代码,

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("START Modeling()"));

//Find Actor and change Material
UWorld* world = GetWorld();

//Material Path
FString matPath = "Material'/Game/StarterContent/Materials/M_Metal_Gold.M_Metal_Gold'";
//Material Instance
UMaterialInstanceConstant* material = Cast<UMaterialInstanceConstant>(StaticLoadObject(UMaterialInstanceConstant::StaticClass(), nullptr, *(matPath)));
//Iterate Every Static Mesh Actor
for (TActorIterator<AStaticMeshActor> ActorItr(world); ActorItr; ++ActorItr)
{
    AStaticMeshActor *Mesh = *ActorItr;
    //Just for Degbuging Purpose
    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Actor: %s"), *(ActorItr->GetName())));
    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Location: %s"), *(ActorItr->GetActorLocation().ToString())));
    //Get Static Mesh Component
    TArray<UStaticMeshComponent*> MaterialComps;
    Mesh->GetComponents(MaterialComps);
    //I get this code from community answer. I do not know how it works.
    for (int32 Index = 0; Index != MaterialComps.Num(); ++Index)
    {
        UStaticMeshComponent* targetComp = MaterialComps[Index];
        int32 mCnt = targetComp->GetNumMaterials();
        for (int i = 0; i < mCnt; i++)
                    //This is the core code which actually changing material.
            targetComp->SetMaterial(0, material);
    }

}

之前 之后

我突然想到这是因为我正在通过迭代改变每个演员。
但是,它只会改变地板演员的材质。

【问题讨论】:

    标签: c++ unreal-engine4


    【解决方案1】:

    您只更改索引为 0 的材料。

    targetComp-&gt;SetMaterial(0, material); 更改为targetComp-&gt;SetMaterial(i, material);。它应该可以解决您的问题。

    【讨论】:

    • 感谢回答我的问题!
    猜你喜欢
    • 2020-06-07
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2014-09-20
    • 1970-01-01
    • 2017-05-23
    • 2018-04-17
    相关资源
    最近更新 更多