
1 应用场景
- 通过场景中事件触发的方式,在运行时修改模型的材质(例如,玩家走到按钮附近,按钮变色)
- 通过UMG用户控件修改模型的材质(例如,车辆模型预览,通过界面修改汽车的材质)
- 等等
2 方法
2.1 使用材质参数集修改参数值
核心原理:该方法可以通过蓝图直接修改材质参数集中的参数值,然后影响使用了该材质参数集的材质。并不是直接修改某个模型的材质。
具体的实现步骤如下:
- 创建材质参数集
- 材质参数集可以存放很多的参数,有标量参数(一维)和向量参数(四维)。作为测试,分别创建一个Opacity变量参数和BaseColor向量参数。
- 创建两个材质,并在材质编辑器中使用MaterialParams材质参数集。输入Collection Parameter即可找到材质参数集变量。
设置材质1
设置材质2
- 在蓝图中修改材质参数集中的参数值(本文使用关卡蓝图,通过键盘事件来触发参数值修改),使用设置标量参数值(Set Scalar Parameter Value)和设置向量参数值(Set Vector Parameter Value)。
![]() |
![]() |
如上图,选择Collection(就是材质参数集),选择设置的参数名还有参数值
2.2 修改在材质编辑器中创建材质参数
核心思想:通过蓝图获取网格体组件,通过组件访问材质参数,修改参数值。
知识前瞻:在材质编辑器中可以创建标量参数和矢量参数,和材质参数集中类似。
步骤:
- 在材质中创建两个参数,分别是标量参数(GlowingParam)和矢量参数(BaseColorParam),控制基础颜色,还有自发光颜色。
- 在蓝图中使用在材质上设置向量参数值(Set Vector Parameter Value On Materials)和在材质上设置标量参数值(Set Scalar Parameter Value On Materials)函数修改
2.3 运行时修改材质实例的参数值而不影响父材质中的值
应用场景:有时候使用别人插件的时候,别人提供了很多预设的材质实例让我们使用,不同材质实例都有很多的参数,当我们某个模型使用其中一个材质实例想要动态的修改其中的参数。
实现方法:UE中材质实例(也就是在编辑器中创建的材质实例)都是静态常量,是不能在运行时修改的,这时候就需要使用到动态材质实例技术。动态材质实例可以在运行时创建,可以在运行时修改参数。
注意:动态材质实例是根据现有材质创建的,修改了动态材质实例并不会将常量材质修改。
注意:使用的设置向量参数值(Set Vector Parameter Value)函数目标是材质动态实例