快速开始
第一个材质
从零编写一个 UI Unlit 材质并生成 UMaterial。
下面的示例创建一个 UI 域、Unlit、带颜色参数的材质。
创建文件
在项目中创建:
DShader/Materials/M_DreamPulse.dsm写入:
Shader(Name="DreamMaterials/M_DreamPulse")
{
Properties = {
vec3 Tint = vec3(0.2, 0.6, 1.0);
float Strength = 1.0;
}
Settings = {
Domain = "UI";
ShadingModel = "Unlit";
}
Outputs = {
vec3 Color;
Base.EmissiveColor = Color;
}
Graph = {
float t = UE.Time();
float pulse = UE.Expression(
Class="Sine",
OutputType="float1",
Input=t);
Color = Tint * (pulse * 0.5 + 0.5) * Strength;
}
}保存后,DreamShader 会生成或更新:
/Game/DreamMaterials/M_DreamPulse.M_DreamPulse这个文件做了什么
| 区域 | 作用 |
|---|---|
Shader(Name="...") | 声明要生成的 Unreal 材质资产。 |
Properties | 生成材质参数节点,例如 Tint 和 Strength。 |
Settings | 设置 Unreal 材质属性。 |
Outputs | 声明图输出变量,并绑定到 Base.EmissiveColor。 |
Graph | 创建材质节点并把结果赋给 Color。 |
常见问题
| 现象 | 检查 |
|---|---|
| 没有生成资产 | 确认文件在 SourceDirectory 下,并且包含 Shader 或 ShaderFunction。 |
| 输出为空 | 确认 Outputs 里有 Base.* = ... 绑定。 |
UE.Expression 报错 | 确认 Class 是 Unreal MaterialExpression 类名,且写了 OutputType。 |
| 材质编译报错 | 查看 Unreal Output Log 或 VSCode 桥接诊断。 |