返回

UE 4 C++ 初学者指南:单击改变材质的三种方法

前端

简介

在虚幻引擎 4 (UE 4) 中,您可以使用 C++ 代码来更改网格的材质。这在许多情况下非常有用,例如当您想要在玩家单击网格时更改其外观,或者当网格与另一个对象重叠时。

在本文中,我们将向您展示如何使用 C++ 代码在 UE 4 中更改网格的材质。我们将介绍三种方法:

  • 使用单击事件
  • 使用重叠事件
  • 使用蓝图接口

使用单击事件

要使用单击事件来更改网格的材质,您可以按照以下步骤操作:

  1. 在 UE 4 编辑器中,创建一个新的蓝图类。
  2. 将蓝图类的父类设置为 Actor。
  3. 在蓝图类中,创建一个名为“OnClick”的事件。
  4. 在“OnClick”事件中,添加以下代码:
// 获取网格组件
UStaticMeshComponent* MeshComponent = GetStaticMeshComponent();

// 获取当前材质
UMaterialInstanceDynamic* CurrentMaterial = MeshComponent->GetMaterial(0);

// 创建新材质
UMaterialInstanceDynamic* NewMaterial = UMaterialInstanceDynamic::Create(CurrentMaterial, this);

// 设置新材质的颜色
NewMaterial->SetVectorParameterValue("Color", FLinearColor::Red);

// 将新材质应用到网格
MeshComponent->SetMaterial(0, NewMaterial);

使用重叠事件

要使用重叠事件来更改网格的材质,您可以按照以下步骤操作:

  1. 在 UE 4 编辑器中,创建一个新的蓝图类。
  2. 将蓝图类的父类设置为 Actor。
  3. 在蓝图类中,创建一个名为“OnOverlap”的事件。
  4. 在“OnOverlap”事件中,添加以下代码:
// 获取网格组件
UStaticMeshComponent* MeshComponent = GetStaticMeshComponent();

// 获取当前材质
UMaterialInstanceDynamic* CurrentMaterial = MeshComponent->GetMaterial(0);

// 创建新材质
UMaterialInstanceDynamic* NewMaterial = UMaterialInstanceDynamic::Create(CurrentMaterial, this);

// 设置新材质的颜色
NewMaterial->SetVectorParameterValue("Color", FLinearColor::Red);

// 将新材质应用到网格
MeshComponent->SetMaterial(0, NewMaterial);

使用蓝图接口

要使用蓝图接口来更改网格的材质,您可以按照以下步骤操作:

  1. 在 UE 4 编辑器中,创建一个新的蓝图类。
  2. 将蓝图类的父类设置为 Actor。
  3. 在蓝图类中,创建一个名为“ChangeMaterial”的函数。
  4. 在“ChangeMaterial”函数中,添加以下代码:
// 获取网格组件
UStaticMeshComponent* MeshComponent = GetStaticMeshComponent();

// 获取当前材质
UMaterialInstanceDynamic* CurrentMaterial = MeshComponent->GetMaterial(0);

// 创建新材质
UMaterialInstanceDynamic* NewMaterial = UMaterialInstanceDynamic::Create(CurrentMaterial, this);

// 设置新材质的颜色
NewMaterial->SetVectorParameterValue("Color", FLinearColor::Red);

// 将新材质应用到网格
MeshComponent->SetMaterial(0, NewMaterial);

结论

在本文中,我们向您展示了如何在 UE 4 中使用 C++ 代码来更改网格的材质。我们介绍了三种方法:使用单击事件、使用重叠事件和使用蓝图接口。希望这些信息对您有所帮助。