获取材质对象
Mesh材质
// 指定索引获取
Material material = @MeshInstance3D.Mesh.SurfaceGetMaterial(idx);
// 遍历
for (int i = 0; i < @MeshInstance3D.Mesh.GetSurfaceCount(); i++) {
Material material = @MeshInstance3D.Mesh.SurfaceGetMaterial(i);
}材质覆盖 Material Override
// 指定索引获取
Material material = @MeshInstance3D.GetSurfaceOverrideMaterial(idx)
// 遍历
for (int i = 0; i < @MeshInstance3D.GetSurfaceOverrideMaterialCount(); i++) {
Material material = @MeshInstance3D.GetSurfaceOverrideMaterial(i);
}材质类型 Material
Material为材质类的基类,可向具体的子类转换
// 使用as关键字
StandardMaterial3D sm = @Material as StandardMaterial3D;
ShaderMaterial shader = @Material as ShaderMaterial;
...
// 使用is关键字
if (@Material is StandardMaterial3D sm)
// fm...
else if (@Material is ShaderMaterial shader)
// shader...
else if (@Material is ...)着色器材质 ShaderMaterial
// 获取Uniform值
Variant value = @ShaderMaterial.GetShaderParameter("Uniform名称");
Variant value = @ShaderMaterial.Get("shader_parameter/Uniform名称");
// 更改Uniform值
@ShaderMaterial.SetShaderParameter("Uniform名称", Value);
@ShaderMaterial.Set("shader_parameter/Uniform名称", Value);