Unreal Cook Book:动态改变材质的颜色等参数

项目常见需求之一就是在运行时,根据游戏逻辑或者其他奇葩需求动态改变对象的外观,其中一些需要动态改变材质的某些参数,例如颜色值,贴图等。

在虚幻4引擎中完成这个非常简便,主要分为三步:

创建包含材质参数的Material

如上图所示,我创建了一个非常简单的材质,其中包含“MColor”这样一个vector3的参数。

创建Dynamic Material Instance

接下来就要创建Dynamic Material Instance对象,一般可以在对象的Construction Script中完成,如下图所示,我们创建了一个Dynamic Material Instance Object,并把它报错到了“MyMaterial”变量中:

在运行时修改材质参数

接下来我们就可以调用Dynamic Material Instance的接口,来动态修改材质的参数,主要是下面三个:

在下面这个例子中,在按下键盘数字键1的时候,动态修改了前面那个材质的“MColor”参数:

DEMO源代码

前面这个简单的例子的源代码请从这里下载:https://code.csdn.net/neil3d/unrealcookbook

使用的引擎版本为:4.11.2

打开项目后,启动“DynamicMaterialInstance/DynamicMaterial.umap”地图文件即可运行。

时间: 2024-10-11 01:29:22

Unreal Cook Book:动态改变材质的颜色等参数的相关文章

jquery动态改变背景颜色插件

GETHUB下载地址 背景颜色用animate方法时时无法改变颜色的 所以要使用插件进行补充. 用法: <!DOCTYPE html> <html> <head> <style> div { background-color: #bada55; width: 100px; border: 1px solid green; } </style> <script src="http://code.jquery.com/jquery-1

百度地图上的行政区域内部颜色的动态改变

今天刚完成百度地图上的行政区域内部颜色的动态改变(随时间).虽然能基本实现功能,但每次改变颜色时都要重新加载覆盖物(行政区域). 全部源代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w

导航条——动态改变导航菜单的背景颜色

1.概述 在浏览一些网站时,当鼠标经过导航菜单某一项时,其背景颜色将切换为其他颜色,实现这种简单的效果会更吸引浏览者的注意. 2.技术要点 本实例主要是应用JavaScript方法来动态改变<td>标签的背景颜色实现的.当鼠标经过<td>表示的导航菜单时,会触发onMouseOver事件,然后调用自定义的JavaScript方法改变<td>的背景颜色:当鼠标移出<td>时,会触发onMouseOut事件,调用自定义的JavaScript方法还原背景颜色为初始

Unreal Engine 4 动态切割模型实现

Unreal Engine 4 动态切割模型实现 <合金装备:复仇>里面,有一个很有趣的设定,游戏里大部分的场景和物件都可以用主角的刀动态切割. UE4中的ProceduralMeshComponent这个组件可以很容易的就实现这种功能,下面介绍下实现的方法. 准备模型 首先我们准备一个模型. 我做了一个简单的圆柱体,用来测试.注意需要切割的地方,为了保证细节,多放点顶点. 为了能够动态切割,我们要勾选这个模型的Allow CPUAccess选项. 新建蓝图 新建一个Actor蓝图,为它添加两

动态改变actionbar上menu的图标

工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="AppTheme" parent="BaseTheme"> <item name="actionBarStyle">@style/NAActionBarStyle</item> <item name="actionBar

unity3d关于怎样动态改变物体 shader

material = new Material(Shader.Find("Custom/Alpha")); material.SetFloat("_Shininess", materialAlpha); void OnRenderImage(RenderTexture source, RenderTexture destination){Graphics.Blit(source, destination, material);} unity3d关于怎样动态改变物体

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

Unity动态改变src的解决方法

在c#程序(winform,wpf)中可以嵌入unity控件,从而实现三维场景.通过设置unity控件的src属性来设置场景,然而src必须是绝对路径,而且只能在设计器进行设置,不能在代码中动态修改,这在需要运行时动态切换场景的时就悲剧了.当然网上有很多关于Unity 如何动态改变src的方法,其方法是正确的,最大的问题莫过于没有说明代码该放在什么地方,干着急. 下面假设unity控件的文件Unity3dControl.cs,那么打开Unity3dControl.designer.cs,找到函数

WPF 中动态改变控件模板

在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按钮是加载新的资源字典,并使用新加载的资源字典替代当前的资源字典这时要用到ResourceManager. 假设现有两个不同的资源字典文件Dictionary1.xaml和Dictionary2.xaml存在于Themes文件夹内: 在MainPage中使用其中一个资源字典作为默认样式文件: <Win