Basics for Material Editor
输出值
Base Color - 影响材质的基本颜色
Metalic - 影响材质的金属度
Roughness - 影响表面的粗糙 (反射) 程度,越低越类似镜面
Opacity Mask - 细节面板Blend Mode选择Masked即可使用材质遮罩控制完全显影与否
Two Sided - 控制是否能够看见反面
Opacity Mask Clip Value - 当 Opacity Mask值小于Clip Value时,该表面不会被渲染
材质节点
Constant - 固定值
Parameter - 可调节变量
Lerp - 插值
Sine - Sin(input)
Time - 时间
材质函数
DebugScalarValues

Result连上Base Color即可很好的可视化输出值
Expose to Library - 是实现的材质函数能够在菜单中显示
Use Preview Value as Default - 使用连上的Preview值作为默认值
LinearGradient - 0到1的渐变

If

材质实例
材质的子类
仅能调节变量参数
无法在原材质的基础上修改功能
Tips
右键材质节点点击Previewing Node
可以很好的看到当前节点的值作为Base Color的效果
更高效的可视化,仅编译了这个节点之前的节点
蓝图中调节材质的参数

但不如通过材质节点中动态调节更好
蓝图是在CPU中处理的而材质的数据是在GPU中处理的(HLSL)
蓝图中的GetTimeSeconds节点等同于材质编辑器中的Time节点
项目代码
GitHub: https://github.com/yufeige4/ActionRoguelike
创建HitFlash材质
实现受伤闪烁功能
实现简单溶解材质
实现材质函数HitFlash
血条UI材质

public:
// Sets default values for this actor's properties
AGHitFlashingTest();
protected:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
UGAttributeComponent* AttributeComp;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components")
UStaticMeshComponent* MeshComp;
public:
UFUNCTION()
void HitFlash(AActor* InstigatorActor, UGAttributeComponent* OwningComp, float NewHealth, float Delta);
AGHitFlashingTest::AGHitFlashingTest()
{
MeshComp = CreateDefaultSubobject<UStaticMeshComponent>("MeshComp");
RootComponent = MeshComp;
AttributeComp = CreateDefaultSubobject<UGAttributeComponent>("AttributeComp");
AttributeComp->OnHealthChanged.AddDynamic(this,&AGHitFlashingTest::HitFlash);
}
void AGHitFlashingTest::HitFlash(AActor* InstigatorActor, UGAttributeComponent* OwningComp, float NewHealth,
float Delta)
{
if(Delta<0.0f)
{
MeshComp->SetScalarParameterValueOnMaterials("TimeToHit",GetWorld()->TimeSeconds);
}
}



