UE4 C++学习记录-代码更换材质(4.22.3版本)
程序员文章站
2022-06-11 07:54:16
...
1、定义
UPROPERTY(Category = Block, VisibleDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
class UStaticMeshComponent* BlockMesh;
/** Pointer to white material used on the focused block */
UPROPERTY()
class UMaterial* BaseMaterial;
/** Pointer to blue material used on inactive blocks */
UPROPERTY()
class UMaterialInstance* BlueMaterial;
/** Pointer to orange material used on active blocks */
UPROPERTY()
class UMaterialInstance* OrangeMaterial;
2、赋值
// Structure to hold one-time initialization
struct FConstructorStatics
{
ConstructorHelpers::FObjectFinderOptional<UStaticMesh> PlaneMesh;
ConstructorHelpers::FObjectFinderOptional<UMaterial> BaseMaterial;
ConstructorHelpers::FObjectFinderOptional<UMaterialInstance> BlueMaterial;
ConstructorHelpers::FObjectFinderOptional<UMaterialInstance> OrangeMaterial;
FConstructorStatics()
: PlaneMesh(TEXT("/Game/Puzzle/Meshes/PuzzleCube.PuzzleCube"))
, BaseMaterial(TEXT("/Game/Puzzle/Meshes/BaseMaterial.BaseMaterial"))
, BlueMaterial(TEXT("/Game/Puzzle/Meshes/BlueMaterial.BlueMaterial"))
, OrangeMaterial(TEXT("/Game/Puzzle/Meshes/OrangeMaterial.OrangeMaterial"))
{
}
};
static FConstructorStatics ConstructorStatics;
// Create static mesh component
BlockMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BlockMesh0"));
BlockMesh->SetStaticMesh(ConstructorStatics.PlaneMesh.Get());
BlockMesh->SetRelativeScale3D(FVector(1.f,1.f,0.25f));
BlockMesh->SetRelativeLocation(FVector(0.f,0.f,25.f));
BlockMesh->SetMaterial(0, ConstructorStatics.BlueMaterial.Get());
BlockMesh->SetupAttachment(DummyRoot);
BlockMesh->OnClicked.AddDynamic(this, &APuzzleBlock::BlockClicked);
BlockMesh->OnInputTouchBegin.AddDynamic(this, &APuzzleBlock::OnFingerPressedBlock);
// Save a pointer to the orange material
BaseMaterial = ConstructorStatics.BaseMaterial.Get();
BlueMaterial = ConstructorStatics.BlueMaterial.Get();
OrangeMaterial = ConstructorStatics.OrangeMaterial.Get();
**BlockMesh->SetMaterial(0, BaseMaterial);**
上一篇: Unity处理材质球过期属性工具