恭喜你成为UI中国推荐设计师 (详情)
//百度统计 20220402 uicn

您的意见是我们 UI 中国进步的动力!
点击立即反馈按钮,发表您的意见!
立即反馈
QQ群反馈
您也可以加入UI中国官方反馈群进行反馈!
群号:302892100
备注:反馈问题后@管理员能让我们及时了解您的意见

提交需求

赛事与广告咨询合作,请填写需求表单,我们会在第一时间与您联系!

0/20
0/200

设计大赛

  • 设计大赛
  • 发布广告
  • 发布招聘
  • 其它需求

提交完成
感谢您对UI中国的支持和信赖!
UE4之全流程开发基础知识
0.0°
2021-07-19 原创文章 教程 举报 4774 17 7 1

初入虚幻引擎全流程开发所涉及的一些基础知识,为了各位方便翻阅我改编了一遍文字版。

UE4之全流程开发基础知识(上)


      经过一年的时间,终于通过UE4将去年的《PERIODIC TABLE 元素周期表 概念设计》成功实现出来,也是对初入学习UE4第一个学习项目。这其中也是踩了大大小小不少坑,这座山找不到解决办法,翻到另一座山解决。看不懂的鸟语找各种朋友帮忙。公司的程序大哥哥小姐姐们都快被烦死了。最终才搞定这个学习项目。

      现在我将项目中涉及到功能点与大大小小的坑整理在这里,感兴趣的朋友可以看看(全文大概在2.4万字),希望对想研究UE4这款引擎的朋友有所帮助。之后我会将发布程序与项目源文件分享在百度云与github上。同时我会将X-MIND版与WORD版的内容放置在百度云。项目程序请使用4.25.4或高于的UE4版本。


      随着数字孪生的日益普及与逐渐进入大众的视野,虚幻引擎已经不仅仅用来制作游戏了。涉及领域甚是包含建筑可视化、影视制作、产品制造展示与数据可视化展示。同时随着近期UE5的体验版发布后伴随Nanite虚拟几何体与Lumen功能的出现,致使我们能够更容易更简单的构建一个更真实数字虚拟世界。


      虚幻引擎并不是一个简单的3D软件,它是一个全面性的开发编辑器, 其学习难度要远高其他三维设计软件,甚至会涉及一定的代码逻辑与知识,同时还需要多软件的联合制作。其中会涉及到PS、XD、AI、AE、DW(代码编辑器)、C4D/3DMAX/MAYA(基础建模软件)、Substance Alchemist、Substance Designer、FontCreator(字体库编辑软件),为什么会涉及这些软件我会在下面的功能点介绍里说明。


接下来我会根据开发本项目我所应用及所涉及到功能点做部分的介绍与说明,毕竟虚幻引擎这个东西真心不像其他软件1、2年就可以玩透的,我只能为各位介绍下我所用的一些功能点与制作时碰到的坑。

      这里我将所用的内容分类为资产管理、模型、贴图制作与导入、字体应用、材质、参数集、枚举、蓝(Actor)、数据表、UMG(用户界面)。


元素每个区域的信息

 


元素模块内容信息所使用的各种字体与字重 


区分的是周期表中的区域,分为s、d、ds、p区,是按电子填充规律划分的


全新的用户界面,采用橙与蓝的互补色的搭配,为整体项目提升科技感的同时带有一丝暖意。全新的界面还对数据内容进行重新的编排,使用户可以更清晰的查阅每个元素的数据内容。


      接下来我会根据开发本项目我所应用及所涉及到功能点做部分的介绍与说明,毕竟虚幻引擎这个东西真心不像其他软件1、2年就可以玩透的,我只能为各位介绍下我所用的一些功能点与制作时碰到的坑。

      这里我将所用的内容分类为资产管理、模型、贴图制作与导入、字体应用、材质、参数集、枚举、蓝(Actor)、数据表、UMG(用户界面)。

 

      资产管理顾名思义就是对项目所应用的所有资产的一个管理,比如关卡、材质、贴图、媒体文件、蓝图、字体、数据表等等。所以不做过多的说明,在这我只说下各位需要主要的问题。
首先,对于没有接触过代码的朋友会有一个问题,就是文件名会用中文去命名,这时就可能会出现引擎无法识别路径找不到对应内容的问题,所以各位尽量所有都使用英文命名。
其次,部分文件不会被添加到资产目录里需要手动添加,比如媒体文件与字体文件,因为这些文件在创建是引擎是让咱们选择的外部路径。如果需要分享项目文件时就会出现这些外部文件找不到链接的问题。
最后来说下如果使用了中文命名引擎找不到路径怎么解决,这里并不是简单的修改一下名字就能解决的。首先各位在修改完文件名后,可能会出现修改后的文件未被指向到源位置和被复制了一份并且原文件无法删除的情况,这时需要右键文件或文件夹选择“修复重定向器”这时文件就会被重新指向到源位置然后就可以手动删除原文件了,如果在资产管理器里无法删除可以手动找到文件目录在目录里删除。其中需要注意的是千万不要再外部修改文件名一定再资产管理器里修改,不然会出现报错问题。




      模型具体怎么导入用什么格式这类的就不说了,主要说下在导入模型时需要注意的。

      首先就是法线方向,本人用的C4D在导入模型时很多法线是返的,在导入至UE4种后就会发现模型上了材质看不到 ,解决方法有两个,一个是开启材质的双面材质这个明显不太友好,后期还会碰到其他问题,所以最好还是手动调整好所需的发现方向后再次导入模型。

      然后就是模型轴的位置,有时会发现模型导入后,模型并没有在轴中心位置,而便宜的很多,这时需要手动调整轴位置后再次重导入。

      最后就是模型材质尽量使用材质实例,这样方便后期的材质调整。

      至于LOD,UE4自带自动的LOD一般来说是可满足大部分需求,但是如果最求完美还是自行制作,不过随着UE5体验版的发布我想也没有什么必要了。


      贴图所支持的格式也蛮多的这里也就不挨个说明了。主要需要注意LOD,虽然模型有自动LOD、UE5有Nanite,但是贴图好像并没有,所以在大量使用高清贴图时还是会影响程序的运行速度。所以还需通过层次细节内的MIP生成设置与LOD偏移去设置我们所需的贴图大小,然后结合蓝图节点去控制所需的LOD。


      使用OC、RS、Arnold、VRAY等渲染器的朋友尽量还是使用Substance Designer来制作贴图,虽然UE4也是节点编辑器,但是器工作原理相对来还是很不友好的。

      举个例子,比如说一个简单的渐变色与渐变方向的调整,现在市面上绝对多数渲染器都只需一个节点即可完成。但是UE4就会涉及至少4-6个节点,并且还需要咱们懂得其工作原理才能调整出想要的效果。


      媒体视频需要结合动态媒体源、动态纹理与媒体功放器一同使用。主要用于模型需要动态材质,比如场景里放置了一台电视机,那么你可以让电视机播放想要的视频。

      说道这个应该会有人想到为什么不用GIF,因为目前UE4并不支持GIF格式的贴图,虽然有一个外部插件可以导入GIF并使用,但是综合可控性是比较差得,毕竟GIF图你不能控制他何时播放何时停止,相对来说如果你只需不可控的动画效果那么用插件导入GIF贴图确实是一个不错的选择,但是这里还是推荐各位使用媒体播放的方式。

      下面来说下在使用媒体视频时都有哪些坑需要避免。

      首先,大家在建立动态媒体源时,尽量将源视频手动放置在项目资产目录里,这样在分享项目与打包项目时就不会出现丢失源文件的问题。

      其次,一个媒体播放器可以对应多个动态纹理。举个例子,比如说你有一个媒体播放器,但有2个动态纹理分别在不同的模型材质上。这时2个模型播放的是同一个视频文件,如果你需要让他们分别播放不同的视频,那么你就需要在创建一个媒体播放器才能播放不同的视频。





      导入字体后会生成一个字体样式与字体。字体样式就是所使用的字体文件,为避免分享项目与打包项目时丢失源文件,尽量将源文件放置在资产目录内,

      至于字体就是一个字体样式管理器,我们可以通过默认字体族系与子字体族系添加其他字体字重,还可通过下方预览输入内容查看具体内容的字体样式和是否用于字体样式。而退却字体族系理论上来说,当当前族系没有所需字体样式时自动使用的代替的字体样式,但是通过测试发现好像并没有用。所以这时就需要使用字库编辑软件在外部重新编辑字库再次导入,这里我用的FontCreator。




      UE4的材质编辑器相对目前市面流行的各大渲染器来说并算友好,除了需要熟练运用各种数学算法外,一些在其他渲染器看似简单的节点想要在UE4内使用是极其复杂的。


      数学运算节点是UE4内最基础且最常用的工作节点,只有熟练使用了数据节点才能制作出精美的材质。


      Multiply 乘法也可当做混合使用,制作发光材质时配合参数节点使用,快捷键m



  •       divide 除法 快捷键d


      Subtract 减法 去掉共有的纹理


      加法,将两个通道上的数值或者纹理增加到一起 快捷键“a”


      Mask(分化蒙版),用来屏蔽、分离通道,分化多维向量的值等,可通过细节面板选择所需分离或屏蔽遮罩的R、G、B通道。


      Lerp(线性,全称LinearInterpolate)线性插值 用来融合两个通道,当alpha值等于0时,融合值为A通道,为1时为B通道,因此0.5以下则为靠近A通道颜色,0.5以上靠近B通道,0.5为对等分融合,快捷键L


      Sin(正弦)与Cosine(余弦)在-1到0之间浮动的抛物线(曲线) 和time配合使用,比如可以用在物体自发光闪烁上(在-1到1之间反复运动)


      if做参数判断 A和B是基础对比判断参数,如果A>b那么输出A>B所连接的参数C,如果A=b那么输出A==B所连接的参数D,如果A<b那么输出A<B所连接的参数E。



      当勾选了材质细节面板里的使用材质属性选项后,咱们就可以使用参数材质与混合材质进行图层的混合。


      材质属性,与默认的属性接口一样,但有一个输出接口可以配合混合材质属性使用。




      UE4想要制作毛玻璃效果,并不能想其他渲染器一样提高粗糙度即可,需要使用SpiralBlur-SceneTexture高斯模糊材质函数节点来实现。这个几点其实我也没弄太明白,但是仅仅是制作简单的毛玻璃,配合参数节点控制Distance的强度,将Result与SceneColor Clamp分别配到基础颜色与透明度即可。

      在使用这个节点时也有一些问题,在毛玻璃后方的所有拥有透明材质的模型将不可见,具体原因目前我也不太清楚,可能是最大折射深度的问题,目前暂时没有很好的解决办法。



      Frensnel(菲尼尔)   学过任意一款3D软件的朋友应该都用过,所以不多说。



      TexCoord(UV坐标节点,全称TextureCoordinate)纹理坐标。

      纹理数量等于UV值相乘 U为横向 V为竖向 快捷键U



      其实算一种置换节点,需要配合数学节点与纹理节点一同使用。


      模型在全局空间内的顶点法线颜色,配合Mask节点可以输出指定通道,也可配合Multiply节点与Vertex Coolor节点制作置换效果。


      constant(一维向量) 输出R通道0-1(黑-白)的向量 快捷键1


      constant2Vector(二维向量) 输出 R G通道 快捷键2


      constant3Vector(三维向量)输出RGB通道 快捷键3


      constant4Vector(四维向量)输出RGB及alpha通道 快捷键4



      TextureSample(纹理贴图)节点如名称所示,用于贴图的调用。不仅可调用常用贴图还能调用动态媒体纹理。


      材质参数是广泛应用去UE4内的一种可调用可修改的参数值,就好如C4D中的用户数据类似(本人入门软件)。通过右键选择转换参数或提升参数,可将向量、常量、纹理等节点转换为参数节点,在通过命名,可供蓝图、用户界面、材质实例等多方面调用并对其进行参数的修改。


      通过右键材质选择“创建材质实例”来为主材质创建一个或多个子后缀为Inst的材质,子材质及时材质实例,每个材质实例都会继承主材质的所有属性,并可修改主材质内的全部参数节点与部分材质属性。

      多个材质实例可分别修改参数,也就说你可以通过建立一个主材质,然后根据主材质修改出多种不同的子级材质,同时修改了主材质时子级材质也会修改。

      材质实例除了以上用处外,还有一个最大的用处。当模型使用材质实例时,我们可通过调整材质实例内的参数,在编辑器视口内实时预览材质的情况,如果使用主材质则需要保存并等待重新构建纹理。这样可大大提升工作效率。


      参数集是一种高级参数的用法,一个参数集可以建立多个标量参数和向量参数,同时还可应用在多个材质或者蓝图内,拱起调用。

      虽然参数集是一种高级参数,但是也是有其弊端。比如参数集不可在材质实例里进行修改,又或者在修改参数集后所有调用的此参数集的资产都会一并修改。所以在使用时还是需要慎重选择。




      枚举简单来说就是一个可选的下拉菜单,通过枚举去实现流程的控制。

      通过右键蓝图创建枚举资产。一个枚举资产可以新增多个枚举类型。之后我们可在蓝图变量中根据枚举资产的名称创建一个枚举变量,这时变量就会获取我们建立的枚举内的类型。

      枚举的使用范围还是很广泛的,比如可以配合布尔做布尔运算,可以配合切换做流程控制等。而且枚举带有描述与选项的直观性,相对使用数值等方式来做流程控制更为直观。





      对于不会C++的朋友来说蓝图是玩转UE4最基本的功能。而且蓝图有很多种类但是大体功能都差不多,这里我用Actor这类蓝图来给他说介绍我所使用的到的蓝图功能点。


      变量是蓝图中最最基础的工作节点,其涉及UE4中方方面面极大部分的内容。只有熟练掌握变量的应用,才能更好的使用蓝图内的其他功能。因为变量类型太多,这里我只针对我用过的来说明。


      在说明之前,大家需要先了解所有变量都拥有2个节点“设置变量与获取变量”。

      1.设置变量是对变量参数的设置。可以手动调整获取从其他节点获取

      2.获取变量是把变量当成一个参数,并设置给其他节点

      其中要注意的是,变量的设置与获取是有先后顺序的,先设置后获取与先获取后设置最终得到的结果是完全不一样的。


      细节面板,我们可以设置“变量名称”,选择所需的变量类型与变量容器等变量细节。其中单独说明下,当打开可编辑实例时大家可以在关卡里的细节面板调整已经放置的本Actor并打开可编辑实例的变量。最后变量在编译成功后才可对变量默认值等属性进行操作。


      设置变量拥有一个输入口和一个输出口与2个执行口。

      1.可以通过修改设置上的输入框设置数值。

      2.也可通过其他几点或其他变量参数位置赋值。

      3.我们还可通过右键对应的接口,选择提升为变量直接创建一个该类型的变量。

      注:这里设置的值并不是默认值,当程序执行到本节点后参数则会被修改。





      对于向量类的变量,我们可以右键每个数据接口去分割结构引脚,然后叫向量的每类引脚分开可供我们单独链接使用,当然这个分割不仅仅使用在变量上,许多带有向量的应用节点也是可以分割的,当我们仅想设置某各值的时候而不知道从何下手时,不妨试试右键接口看看能不能分割。


      获取变量是获取变量当前参数值并将其赋予某节点。


      布尔变量,基础的判断型变量,分别可以设置True与Fasle,经常配合分支节点使用。常用节点之一。


      浮点变量,一个实数节点灵活度与应用范围非常的好 。几乎所有节点都能应用的变量。常用节点之一。


      整数变量,一个整数变量相对浮点灵活度较差但是应用范围页非常广泛。也属于常用节点之一。


      时间变量有很多类型,比如时间间隔、日期时间、时间码。都是时间的变量。经常与拆分节点使用。


      Actor变量是一个类型的统称。Actor变量的默认值是不可能编辑的,需要进行设置。但是我们可以通过变量类型输入已有的Actor蓝图名称创建指定的Actor变量。同时Actor变量可以创建自己的事件。平时Actor变量会与获取节点、设置节点与类型转换节点配合使用较多。


      静态网格体变量,是一个模型设置与获取的变量。我们可以使用次变量设置所需调用的模型。通过静态网格体变量生成的模型不会显示在蓝图视口与组件内。这个变量多用于动态获取或修改改变模型。


      变量,经常与获取材质与设置材质配合使用,来实现动态更换材质或者更改材质参数的目的。属于常用变量一。


      枚举变量在上方介绍枚举时已经很详细说明了着了不多说了。


      媒体播放器变量就是调用媒体播放器使用,经常配合播放、暂停、打开源等节点使用。当蓝图实例需要调用打开多个不同媒体时,我们需要媒体播放器变量与纹理变量配合使用,然后编辑各个蓝图实例上的这2个变量,即可达到每个蓝图实例播放不同的媒体。


      基础媒体源变量是调用媒体源的变量,常配合打开源节点使用。只有当打开了媒体源,媒体播放器才会播放媒体,动态材质才会显示媒体播放。


      纹理变量同时可调用动态纹理与静态纹理,可与设置纹理参数值节点设置纹理贴图,如果设置的是动态纹理,那么配合媒体播放器变量与播放节点即可播放媒体文件。本变量不仅应用在设置模型贴图,还可设置灯光天光等组件上,所以也属于常用变量。


      线性颜色变量,一个颜色的变量,不仅可以用于修改材质的向量参数,也可用于涉及颜色的组件。同样属于常用节点。


      UMG变量也是用户界面变量,这个变量在创建时与其他变量略有不同。首先我们需要创建一个UMG蓝图(用户界面蓝图),之后我们随便创建一个变量,然后再变量类型里搜索我们UMG蓝图的名称进行创建。UMG变量常与添加到视口节点和从父项移除节点配合使用。得以实现当用户对Actor进行交互操作时打开或关闭所需的用户界面。


      函数常用的一个函数脚本,用来构建或封装一些复杂的函数方便调用。


      构造脚本,默认无法删除的函数脚本,多用来预先构建某些事件。


      点击我的蓝图慢板函数后方的加号可以新增一个新函数。我们手动新增的函数,目前我所了解的是函数除了不能直接使用时间轴节点外其他节点都可以使用,但是函数可以调用已有的时间轴节点当做一个事件使用。

      并且手动新增的函数还可创建输入与输出的参数接口,方便我们将变量参数直接传入或传出。


      我们可以通过函数细节面板手动添加输入接口与输出接口,并调整戏接口类型与接口名称。当我们在创建输出接口后,会自动新增一个返回节点。具体的使用看下方实例。


      我们可以通过函数细节面板手动添加输入接口与输出接口,并调整戏接口类型与接口名称。当我们在创建输出接口后,会自动新增一个返回节点。具体的使用看下方实例。


      调用函数时,如果布尔值为“ture”则执行数组循环赋值到字典,当循环完成时返回枚举显示。如果布尔值为“false”,则返回枚举不显示。


      调用函数时,如果布尔值为“ture”则执行数组循环赋值到字典,返回枚举显示如果布尔值为“false”,则返回枚举不显示。

      这2个函数看似一样,实则大有不同,例子1:是当循环赋值完成后才会返回在执行接下来的程序,如果数组的数据量非常大时,这个时间可能会很长。

      例子2:并没有等待循环结束直接返回并执行下面的程序,如果这时数据量过大就会出现后面程序已经开始执行而数据还没有赋值完成显示不出来。

      所以这个返回节点具体放在什么位置还需斟酌。


      图表,蓝图编写主要程序的地方。我们可以新增多个图表,每个图表可以拥有多个事件。


      UE4为我们准备了多种多样的事件选项,当触发事件后就会执行事件所对应的程序。当然除了一些固定事件外,为了方便管理与调用UE4还为我们增加了一种自定义事件。


      程序开始运行就执行的事件,用处很多,比如运行一段蒙太奇动画、生成一些模型、创建一些UMG蓝图等。


      Tick事件,每帧行一次程序。“Delta Seconds”参数则是每帧所的时间,因为各种原因(比如卡帧等),每一帧所花费的时间并不是相同的。“Delta Seconds”具体用处目前我还没有弄清楚。并且次节点是在实时执行程序,如果如果频繁使用会降低程序运行速度。


      事件被点击的Actor,也就是当Actor被点击时所触发的事件。应用范围非常广泛。Button Pressed为按下按钮参数。


      如字面意思,就是鼠标开始悬停与结束悬停所触发的事件,这两个会经常配合使用。


      滚轮事件有3类,鼠标滚轮轴、鼠标滚轮上滚与鼠标滚轮下滚。先来说下我所用的是鼠标滚轮上滚与鼠标滚轮下滚。这2种与鼠标左键事件一样,只是输入方式改变了而已。通过输入消耗上滚轮与下滚轮来实现镜头远近。而鼠标滚轮轴事件则是每帧提供一次滚轮轴的当前值。

      至于这2类有什么不同呢,滚轮上下滚的的事件是输入时执行,需要配合多个数学几点与控制节点来配合,相对来说不太影响程序的运行速度。而鼠标滚轮轴是程序开始运行时就开始TICK滚轴轴的值,相对来说会比较占用程序运行速度。


      看到这里大家会发现,每个事件的右上角都有一个红色圆角方块。这个是Output Delegate委托事件,这个功能我还真没有用到仅仅了解了一下,终于的逻辑层面还是必须深的,感兴趣的朋友可以去查一查管网的资料。


      鼠标左键、鼠标右键事件。最最最常用的事件。Pressed为按下事件,Released为松开事件,Key是返回的一个键值。其实这个事件其实更应该称为“键”事件,因为我们可以通过细节面板修改输入的方式,直接改变触发事件所需的键位与物理设备。这其中消耗输入、暂定时执行与重载父绑定我没有接触就不做说明了。下面的修改器,其实就是绑定PC与Mac的CTRL、ATL、SHIFT与WIN键来一起输入。



      我们通过右键图表空白区输入“自定义”,即可找打添加自定义事件。自定义事件是一个灵活且非常常用的事件,他可以将复杂的程序逻辑整合成一个事件供我们在需要的时候进行调用。有的朋友会发现这个事件与函数貌似差不多,那么为什么不用函数?目前我发现的区别就是自定事件可以跨蓝图进行通讯调用,而函数则不可以。

      在创建自定义事件时大家需要注意,自定义事件的名称是可以自行修改的,方便根据名称进行调用,但是自定义事件的名称不能重复。


      自定义事件之所以灵活就是它为我们提供了输入接口,我们可以通过自定义事件的细节面板内的输入区新建所需调用的的变量接口类型。通过这个接口我们可以让本蓝图或其他蓝图的变量数据传入到这个事件内,供事件内的程序使用。


      添加了输入接口的自定义事件,通过下方蓝色调用自定义事件左侧接口接收输入,然后从上方红色自定义事件右侧接口输出给程序。


      节点,蓝图程序构成的基本的元素。UE4蓝图的节点众多,每个节点都有不同的功能与用处,我这里至整理了我所应用到的节点。


      流程控制类节点用于程序的流程管控与整理程序代码,属于常用的蓝图节点类。


      序列节点的作用就是可以将一个长的顺序执行代码划分成段,更便于管理。


      分支节点,需要配合布尔值来进行判断执行的节点。


      切换节点Flip Flop,根据输入事件在A与B之间切换执行程序代码。


      我用到了两种循环节点,For Each Loop、For Each Loop with Break。这两种循环节点都是用于循环执行数组变量的节点。均都从左侧Exec进入然后通过Loop Body进行循环,右侧Array则是输入的数组,右侧Array Element则是输出的元素,而Array index则是元素的索引。Completed是完成执行接口,当loop Body循环执行完成后可以触发Completed之后的事件。要说这两个节点的区别则是在于左侧的Break,这个中断,当某个事件通过次接口后则会中断停止循环。

      大家在使用循环节点时需要注意的是,当我们更换数组类型时,Array、Array Element这两个接口时不会自动更换类型的,需要我们手动断开链接后先链接Array这个接口然后节点就会自动更换类型。


      切换节点我们上面枚举篇幅里有过体现这里就简单说下。

      当我们右键输入“切换”时,可以在Switch里看到很多类型,这里不要怕。其实这个切换就是我们枚举里的类型,根据当前枚举所选的类型去执行对应的程序代码。当我们了解了这个切换是做什么的之后就好说了,我们只需要找到与我们枚举相对应的切换节点即可。


      门gate节点,其实一种开关节点,Enter是输入事件,Open则是由某事件控制开启输入,Close则是由某事件控制关闭输入,Toggle则是由某事件控制在开启与关闭之间切换。Start Closed是否启用关闭事件。


      时间轴节点,是蓝图图表常用的一个节点。通过它我们可以实现一些效果或控制一些事件。


      很简单左侧为事件输入,右侧则是输出执行。

      先来看左侧。Play播放,不多说就是播放。Play from Start从头开始播放,就是没次播放都会从头开始。Stop停止,小学4年级英语不多说。Reverse反转,这里要注意这个接口时从当前时间点反转。Reverse from End从末端反转。Set New Time设置新时间,举个例子:假如当前时间轴共5秒,你可以通过这个接口与New Time浮点去更改新的时间,可以更长也可以更短但是时间轴里的关键帧位置是不变的。

      然后是右侧输出。Update执行,如例1:开始执行,立方体1秒Z从0旋转到360。

      Finished完成时,如例2:时间轴播放完成后执行立方体Y轴直接变成180。Direction是时间轴自带的枚举变量,是当前时间轴的一个播放状态,这里UE4自带翻译是快进与快退,其实我感觉正确的翻译应该是播放与反转播放。

      最后是下方4类轨道变量,供输出使用的。这里大家看到的是4类,其实这里是大家手动添加的。




      当我们双击时间轴节点即可打开时间轴面板,这里进来后是没有时间轨道的,对应的我上面所说的4类变量接口也是没有,大家通过上方添加这几类变量轨道,浮点轨道、向量轨道、事件轨道、颜色轨道。还有一个是根据所需曲线添加轨道这个下面说。长度设置时间轴的总长度这时秒为单位(本人没找到怎么改成帧,所以习惯帧的小朋友们注意下),然后还一些公共参数,使用最后一个关键帧、自动播放、循环等根据自己需求选择就好。

      下面来说下轨道相同的功能,当我添加了一条轨道后,对应我们可以通过F2修改轨道名称,同时节点上也会显示这条轨道的接口。我们还可以通过外部曲线选择一条曲线直接添加进来(方便相同效果的调用不用来回手动调整)。还有一个同步试图,当有2条以上轨道时,那条轨道没有勾选次选项那条轨道既不会同步缩放移动。

      接下来看下不同轨道之间的不同作用。


      一个浮点值的轨道(就是带小数的)。我们可以通过它做很多事情,比如让物体旋转、物体移动、物体缩放、调整某个RGB通道值或者作为Alpha值来使用。

      因为是浮点值所以整体动画会很细腻。因为UE4并未提供整数轨道,所以各位入如果需要整数则需要配合数学节点里的转换整数节点进行转换。


      向量轨道,看到的是XYZ三个轴,其他各位吧它理解为三个浮点值就好,我们可以通过右击时间轴节点上的蓝色向量参数接口将其拆分,这时大家看到的就是3个XYZ的浮点节点。这里大家可以分别调整这3条曲线。用法与浮点轨道一样其实就是从1条曲线变成了3条。


      这个轨道我还真没用到。事件轨道没有曲线仅有关键帧,其实就是当事件走到关键帧时就会触发事件接口所连接的程序代码,如果你轨道内有多个关键帧就会触发执行多次。


      颜色轨道就是颜色根据事件进行的变化,这里没有关键战和曲线,大家通过下方的2个滑块去调整颜色的变化和透明度。


      咱们可以通过内容浏览器右键-其他找到曲线,然后选择对应的3种曲线类型新建曲线图谱供时间轴调用。咱们可以通过选择已有曲线图谱然后点击时间轴面板内的添加选中虚线资产来新建当前曲线轨道。





      数学类节点有非常的种类,如果按类型分可以分成大体三类。浮点类,整数类,向量类。

      在绝大部分数据节点里我们可以通过节点的输入框去手动设置想要的参数值,当然如果你需要一个可控的参数那么就需要创建一个变量。至于如何创建上面再说变量时有提及过。这里就不在重复了。下面主要来说说我所用到一些数学节点。

      因为节点众多,这里我将用到的节点按照运算类、判断类、创建与拆分、控制类与转换类分开说明。


      因为运算节点有很多,比如整数+整数、帧+整数、向量+浮点很多很多,这里我就统一用浮点类的了。


      浮点加法运算,搜索“+”。


      浮点减法运算,搜索“-”。


      浮点乘法运算,搜索“*”。


      浮点除法运算,搜索“/”。


      浮点百分比运算,搜索“%”。


      计算输入值的正弦值。


      计算输入值的余弦值。


      判断类节点主要是将两组参数进行对比判断,当条件达成时则会输入Ture否则为False。判断类的节点经常配合分支节点或带有布尔接口的节点使用。


      浮点大于布尔。


      浮点小于布尔。


      浮点等于布尔。


      浮点不等于布尔。


      浮点小于等于布尔。


      浮点大于等于布尔


      当变量A等于变量B时为True,执行设置“立方体”可视性,New Visibillity(新的可视性)为True(显示)。



      创建2D的向量。


      创建3D的向量。


      创建4D向量。


      将变量A赋值于向量X变量B赋值于向量Y创建一个向量然后赋予变量“向量2D”。



      将2D向量进行拆分。


      将向量进行拆分。


      将4D向量进行拆分。


      将变量“向量2D”拆分为XY分别赋值设置变量A与变量B。


      控制类的数据节点也有很多,我这里就说下我用的最多的3个。


      每帧生成一个0到1之间的浮点数值,我们可以配合运算节点来制作很多效果,如灯光的闪烁、植物的摆渡等等。


      插值是通过Alpha值的0-1控制A值到B值的过度。我经常拿来与时间轴一同使用,大家可以看下例子。


      这个实例跟时间轴里的效果一样,均是1秒内立方体Z轴从0旋转到360。看似效果一样,但是其中事由很大的不同之处的,首先时间轴里关键帧我们是没法快速调整和调用参数的,而如果用当前形势,我可以通过调整变量A和变量B来达到我想要的旋转角度不用再去编译蓝图。甚至变量是可以通信给用户界面,让用户自己调整。


      限制节点,通过Value输入一个参数,然后限制只能输出Min到Max之间的一个数值。我通过这个几点来控制镜头拉远与推进的范围。

      每帧生成一个0-5的数值,然后通过限制节点,限制输出2-3之间的数值。


      UE4提供了很多数学之间的转换,这里我只用一个整数转换为浮点来说明。正常情况当我们想把整数链接到浮点时UE4会自动为我们添加一个转换节点,如果需要手动调用大家可以在数学分类下的转换里查找自己所需的转换节点。一般来说直接用UE4直接添加就够了。


      打印文本是用来做程序测试的,我们可以通过打印文本的方式来测试程序有没有正常的运行。我们可以将许多参数链接到In Text上UE4会自动帮我们转换为文本格式,如果程序正常则会将对应参数显示在屏幕或日志里。

      Print to Screen打印到屏幕Print to Log打印到日志勾选这两项分别会在屏幕的左上角与运行日志内显示。Text Color是打印文本的颜色,当我们有多个测试时可以通过更改颜色来区分。Duration文本持续显示的时间,当打印文本为Tick事件时请将Duration数值调整为0,这样就只会一直显示一条数据。


      我们可以通过工具集的节点对蓝图内的模型、Actor、变量等元素进行参数设置与调整已达到我们想要的一些效果。因为节点太多,这里我只挑选了几种有代表性的节点进行说明。


      设置类的节点,是专门对模型、Actor的各项变换参数进行设置,如相对位置、场景位置、相对旋转等。


      设置蓝图内的Actor的旋转,通过目标链接Actor组件对New Rotation新的旋转进行设置,New Rotation也可以链接一个3D向量变量或者分割后链接浮点变量。Teleport Physics是一个碰撞检测,暂时没用过。Return Value如果设置旋转成功那么返回Ture。


      设置静态网格体组件的相对父级的位置与旋转,通过目标链接要设置的静态网格体组件,New Location新的位置与New Rotation新的旋转可以用一个向量变量来链接也可以将其分割之后用浮点变量来链接。Teleport与Teleport是碰撞检测我没有用到过所以也就不说明了。Sweep Hit Result则是命中检测,分割后会看到很多参数,可以与鼠标或者碰撞盒体配合,当碰撞时可以传递指定的数据。


      将组件附加到组件,就是将一个组件作为子集附加到另一个组件。各位先了解这个是做什么的就行,说道组件类节点的时候我会有一个实例。

      首先通过目标链接要作为子集的组件,在通过Parent确定父级组件,Socket Name是一个父级组件的插槽名(没用过不明白),然后Location Rule(位置规则)Rotation Rule(旋转规则)Scale Rule(缩放规则)分别有3种选项,保持相对很好理解不多介绍,保持场景就是相对场景进行设置无视父级,对其目到目标就是父级怎么变换它就怎么变化。Weld Simulated Bodies默认勾选不变,Return Value同样是一个返回值。


      添加Actor本地旋转的参数就不多说了,主要来说下这个与上面两种的区别。


      获取目标相对父级的变化,Return Value是返回的变化向量值,可通过发分割为Return Value Location、Return Value Rotation、Return Value Scale并且这三种向量值还可继续分割。

      我们可以通过这个节点获取物体的当前位置,然后加入一个变量,让其实时根据当前位置进行变换。


      获取类的actor使用方法去上面大致相同,只是它获取的是所选的这个actor。

      注:如果你说选的是Actor的子集,而子集在场景里有2个那么他会对这两个进行设置。


      通过Actor Class 选择一个Actor或链接一个Actor类的变量,来获取关卡场景种的所有该类型的Actor(父级、子集、孙集),创建为一个数组,然后我们可以同FIND与GET节点去查找调用其中某个Actor对其进行操作。


      流控制里就2个节点,延迟与可再触发延迟。虽然就是2个节点,但是这两个节点非常常用。但是本人在使用中貌似也发现一些BUG,会有一些添加了延迟类节点的程序,延迟结束后不会继续运行。如果有朋友碰到相同的情况可以换成时间轴节点,但是尽量能用延迟还是不要用时间轴,毕竟时间轴的载量还是比较大的。


      顾名思义就是延迟,通过设置Duration持续事件浮点值来控制延迟的长度,时间结束继续运行后方代码。要注意的就是,这个延迟只会出发一次,下次将不会再次触发。


      使用方法和延迟一样,只是这个节点是可以多次触发的。甚至我们可以通过手动制作一个循环程序来达到一个简单tick事件。

      延迟0.2秒后打印立方的相对缩放X值然后循环回再次延迟0.2秒继续执行。


      在UE4中并不是这么分类的,这里是我将其归到了一类中。这类的节点主要用于对数组、集与映射字典的设置。我也就用到其中一部分。这里我就用数组类的节点来做说明。


      ADD添加,往数组内添加一条新的参数,并且通过右侧输出新添加参数的索引。


      FIND查找,如果我们已知数组中一条数据,我们可以通过左侧的通配符接口去查找数组中这条数据的索引。


      GET获取,如果我们已知所需数据的索引,我们可以通过左侧整数索引搜索并复制这条数据然后所右侧输出。


      CLEAR清除,清除当前数组里的所有数据。大多数情况时为了提升程序的运行速度,会在获取到数据并赋值后,将数组内的数据进行清除。当需要时再次调用数据。


      已知数组里有一条数据是3.14,通过FIND获取到这条数据的索引并传给GET赋值这条数据,将其打印在屏幕。


      添加组件是通过程序自动添加一些我们想要的组件,通过添加组件类节点的组件不会显示在蓝图组件里。


      新建一个静态网格体组件,如果没有勾选Manuale Attachment(手动附加)系统则会默认附加到Actor的根目录,其实这里的目标与手动附加我也没弄明白,我是选择的什么也链接默认,然后仅对Relative Transform相对变换进行设置。Return Value而这里的返回值则不是布尔了,返回的则是一个静态网格体组件,只是还没有设置静态网格体。


      设置静态网格体节点,是对静态网格体组件使用的一种节点,通过它我们可以修改组件调用的静态网格体(也就是模型),也可以通过它对没有设置静态网格体的组件进行设置。

      通过目标链接要设置的静态网格体组件,然后通过New Mesh新的网格选择要修改或附加的模型,这里我们可以通过变量达到快速调整。Return Value返回值则是布尔值,是否设置成功。


      通过添加组件新建了一个组件并且对象变化是XYZ为100,然后将此组件附加到立方体并且设置所有规则为相对,那么新添加的组件就会相对立方体放置在XYZ为100的位置,最后因为是新增组件所以静态网格体插槽是空的,我通过设置静态网格体节点为其添加一个模型。

      因为UE4并未提供像其他3D软件一样的克隆功能,所以如果我们需要同时规律的复制很多模型就会用到这几个节点,但是想要实现克隆光着几个几点还是不够,真正想具体了解的朋友可以搜索“集群买量”关键词,会有非常详细的教程。


      通过渲染类下的节点我们可以干许多事情,如设置材质、光照、LOD、纹理等等。我也就使用了其中一小部分,主要是用来创建与设置动态材质实例。我将节点按照获取与设置分成两类。



      通过目标链接静态网格体获取目标上的Element index(索引)网格体的第几个材质插槽内的材质,并返回一个材质接口。


      通过选择已有的参数集与Parameter Name参数名称获取参数集内应对的参数值,然后返回一个4D向量参数。



      通过选择资产已有材质或获取的材质创建一个动态材质,返回的值是动态材质接口。


      给一个网格体设置一个材质,材质可以是资产已有材质也可以是动态材质,如果网格体已有材质将会替换。


      设置一个动态材质中的标量参数,注意这里的目标接口时动态材质接口,通过Parameter Name参数名称查找材质中的参数之后通过Value对其参数进行修改设置。


      在材质上设置标量参数值节点使用原理与前两个大致相同,唯独需要注意的是这里的目标不在是动态材质,而是网格体。他是设置网格体上的材质参数。


      设置向量参数值节点与上面的标量参数值节点是一个原理,都是应用去动态材质。这里输入的Value参数值则是一个线性颜色4D向量参数,我们可以分割分别控制R、G、B、A四个浮点值。


      这个节点也是设置网格体上的材质参数。这个节点虽然是向量参数值节点,但是他的Value参数值是一个3D向量参数,一般来说我更喜欢使用4D向量所以我并没用使用这个节点。


      首先我获取到立方体的第一个材质将其创建为动态材质实例,之后再将动态材质实例替换掉立方体原来的材质,这句看似是一个相同材质但是实则不同,在没替换前立方体是一个常量材质,而替换后则是一个动态材质。这之前我为了方便创建了一个参数集,从中拿到#0号颜色去设置动态材质的自发光颜色。这里为了给大家演示节点,最后我使用的是设置材质上的标量值,因为现在立方体上的材质时动态材质,所以可以修改其动态材质的自发光强度的乘以系数。

      最后来说下动态材质和常量材质,咱们通过资产管理器创建的材质与动态材质这都属于常量材质,这两种材质只能在编辑时进行修改参数,而通过蓝图创建的动态材质实例在程序运行时也可以进行修改。


      说实话游戏类下面的节点我就用过“获取玩家控制器、获取鼠标位置、从类生成Actor”这3个其他的还需要小伙伴们自己去探索了。


      如名字就是获取玩家的控制器,因为UE4可以开发的东西很多,比如多人闯关游戏,这里就会设置到选择那个玩家控制器,而我们可以通过设置Player Index索引值去设置选择那个控制器。返回值则是玩家控制器类接口。


      我可以通过获取玩家控制后再获取玩家的鼠标位置信息,获取鼠标位置节点的目标是玩家控制器类,输出的则是屏幕上的XY坐标与是否获取到鼠标的布尔值。


      从类生成一个Actor,制作集群买量视频的朋友会经常用到。这个节点我真没用过,如果有


      类型转换位于工具类下,是用于创建蓝图之间通信的一种节点。得以达到通过跨蓝图设置修改蓝图的内容。这个东西对于初期的朋友来说有点难度,我也是琢磨的很长时间才慢慢明白。下面我用一个例子来说明一下。


      首先我已经有了一个UMG用户界面蓝图为UI_Page_content,并且这个蓝图有一个动画效果,我将其制作成了一个自定义事件,并命名为Content_on_the_left_move。

      当前蓝图有一个立方体,通过立方体创建了一个点击立方体时事件,然后我们在工具-类型转换里找到“类型转换为UI_Page_content”将Object与立方体事件的Touched Component链接达到链接通信,这时我们就可以通过类型转换节点的As UI Page Content接口搜索到“Content_on_the_left_move”事件并调用。而Cast Failed则是转换失败在屏幕进行打印。

      这样一来我们就可以通过点击当前蓝图的立方体让UMG蓝图播放一段动画。


      媒体类的节点主要是针对媒体播放器进行设置的节点,这里我简单的介绍几个和说下怎么通过蓝图去调用播放媒体。


      在播放器打开需要播放媒体源,节点目标需要链接一个媒体播放器变量,Media Source则是媒体来源,可以通过手动选择资产已有也可以通过变量调取。只有当打开媒体源之后我们才可进行播放,不然播放器内没有可以播放的内容。

      这时大家需要注意一点,如果媒体播放器设置的是打开是播放,那么打开源后视频就会直接播放。


      播放节点,目标对象是媒体播放器变量,播放器如果是暂停状态则会进行播放。


      暂停节点,目标对象是媒体播放器变量,如果播放器是播放状态则暂停。


      倒回节点,目标对象是媒体播放器,会倒回到媒体源0时,如果播放器是播放状态则会从0时继续播放。


      首先我们让媒体播放器打开对应的媒体源文件,然后播放器播放,紧接着暂停在倒回到0时。


      用户界面类节点是专门用于Actor调用资产已有用户界面,可以通过用户界面类下方的节点调整界面的位置、大小、获取视窗大小等诸多事情。这里我就说明下两个最主要的节点。


      我们既然要调用用户界面,那么我们必须先有一个用户界面蓝图,然后通过创建控件节点(不要输入构建NONE搜索不到),就会得到当前节点,通过Class选择我们要构建的界面,将其附加在一个玩家控制器上Owning Player,所以这里Owning Player拥有玩家,必须链接一个获取玩家控制节点,不然UE4不知道将这个界面创建给谁。最后输入出一个用户控件参数供我们调用。


      当我们创建用户控件后,我们就可以通过通过添加到视口节点,将得到用户控件参数添加到用户的视口,这里目标对应的是用户控件参数,而ZOrder则是层级,这个应该很好理解。


      当我点击立方体时,为玩家1创建了一个UI_Mask界面(遮罩),并显示在视口的10层。


      碰撞类的节点应用范围很广,比如碰撞某物体触发事件、进入某位置触发事件等等。我这里仅仅用来碰撞命中触发创建一个用户界面并为其附加数据内容。节点。


      创建命中结果,左侧是命中后获取到的结果,然后从右侧Value返回一个向量参数,分割后可单独调用。也可以直接创建一个变量供之后使用。


      中断命中结果,其实就是将已有的命中结果变量拆分掉。


      当我点击Actor时,活动到一个类的所有Actor,然后从中找到被点击的这个Actor,之后创建了一个命中结果获取到这个Actor的名称,将其转换成Actor类。之后创建了一个Other_Properties的用户界面并附加到玩家1并添加到视窗,然后调取Other_properties用户界面蓝图的Other Properties事件,并将之前创建的Actor类名称变量传输至事件内,供事件根据类名称查询对应数据参数并赋值在Other_Properties用户界面上。


      在蓝图的上方有一个“调试过滤器”,通过这里选择好要调试的Actor后运行,就会看到原来的白色线变成了橙色,就是代表这段程序正在运行,而没有运行的程序还是白色,只有运行的变成橙色。我们可以通过这个变化检测我们的程序哪里出现了问题不有走通。


      通过创建数据表我们可以将一些信息预先储存在程序里,当触发某些事件时,可从数据表内进行调用与储存。UE4数据表可以储存的东西数据种类还是非常多的,比如参数值、布尔值、线性颜色、媒体文件、模型文件等等,只要变量里有的都可以储存在数据表里供我们使用。我这里仅仅使用到了调用,并为涉及到修改与储存,所以在接下来的数据表环节与用户界面环节我只能项给为说明如何去调取数据表里的内容。


      在创建数据表之前,我们必须先有一个数据结构,让UE4知道我们这个数据里储存的都是什么类型的数据。

      我们可以通过资产管理器右键-蓝图找到结构,并做好命名供我们后续创建数据表是查找。

      这里要注意的是,结构命名不能出现一些特殊符号和空格,如果需要分割那么是“_”代替。还有就是不要使用中文。


      结构的创建操作与参数集枚举差不多,就不多说了。主要来说一下结构在数据表中的作用,首先结构其实就是数据表的标头,对于不会代码的朋友UE4这点做的已经很人性了。当我们在结构里创建一个变量类型或修改一个变量的顺序时,对应调用这个结构的数据表标头和数据内容也会对应更换,其中还有一点就是,像字体文件、媒体文件这类的外部文件尽量放在资产目录内。最后就是结构是一个可复用的,一个结构可以用来创建多个数据表。我这里列举了一些变量,供大家参考。


      现在看到的就是UE4的数据表,可以通过选择每行数据按"F2"或双击去修改行命名。而下方的行编辑器就是咱们刚刚创建的结构,通过这里我们可以去编写数据表的每行数据。



      首先通过右键资产管理器,从其他选项里找到数据表。这里我只用的是数据表,其中还有一个合成数据表通过了解应该是一种更高级的用法。


      点击数据表后会弹出一个窗口,让我命名数据表名称(切记使用英文),然后搜索我们所需要的结构,点击确定数据表就会根据我们所选的结构进行创建了。然后我们就可以去数据表里填写我们所需的数据内容了。


      可以通过右键数据表,选择导出未CSV与JSON格式的数据表,不会代码的小伙伴还是CSV吧。


      如果我们已经有了一个CSV格式或者JSON格式的数据表,UE4也为我们提供了导入的办法。


      首先我们要有一个对应结构的数据表,就是本地数据表结构要与UE4数据表结构完全一致。然后再UE4数据表的数据表格细节里找到“文件路径”,设置好本地数据表路径。


      然后来到资产管理器找到要导入的本地数据表的UE4数据表右键,找到重新导入。这时本地的数据就会导入到UE4中。


      这里总结一下我用数据表时碰到一些坑。

      1.数据内容涉及特殊符号的话,需要确保字体文件是否支持。

      2.英文命名数据表,不然会经常报错。

      3.导入的本地数据表不能实时与UE4数据表更新。


      UMG蓝图就是所谓的UI用户界面蓝图,用来创建用户界面的蓝图。

      创建方式:资产管理器右键找到用户界面,选择创建“控件蓝图”。

      用户界面蓝图与上面咱们接触的Actor蓝图还是有诸多不同之处的,不如顶部少了一些功能,则多了一个控件反射器。这个东西我使用过,貌似是用来做测试使用的。然后相对Actor蓝图多出了一个控制板、层级、动画与时间轴面板。而且在顶部右侧多出一个设计器与图表Tab按钮。之后我会按设计器与图表为大家说明其功能点。


      设计器模式是专门为编排UI界面使用的模式。通过控制板调用各种美化各种所需的组件,之后结合层级编排页面结构,最后配合动画与时间轴制作UI动画效果。

      这里要提前说明一下,这个设计器模式看色与各类设计软件差不多,但是还是有很大的不同,层级的关系控件的功能决定了页面效果。非要用一句简单的话来介绍,那么应该成它为“可视化前段页面编辑Photoshop”。所以大家在使用这个东西前,还是要多多少少了解一下前段代码搭建逻辑。


      这个是层级管理面板,为什么要吧这个单独拿出来说呢,这不就是PS里的图层嘛。其实并不是,UE4的UMG蓝图内的层级面板与PS的层级完全不一样,我们并不能通过调整图层之间的上下级来改变它的上下层关系。毕竟UE4最后输出的是一串串的代码,这里其实更像是代表代码的层级关系。如果需要调整层级,是需我们到细节面板进行调解的。具体调解的方式在后面我会说道。


      控制板是我们用来调用UE4自带组件或我们通过UE4组件组合成的用户界面而使用的面板。分类很多我这里仅拿我常用的集中来说。


      在了解组件之前,需要重点说一下UE4组件使用的逻辑。UE4的组件是父级控制子集,父级继承子集(我也不知道这么描述对不对^.^)。

      举个例子:我有一个图像组件,这时图像组件自带尺寸插槽,我们可以通过图像组件的尺寸插槽调整图像大小。而这时我给图像组件增加了一个父级“尺寸框”,这时再看图像组件就没有尺寸插槽了,如果我们想要调整尺寸就要到父级“尺寸框”进行调整。



      还有一点就是,当我们吧鼠标悬停在控制板的组件上时会看到一些列的描述,其中会有带“*”的描述,这里会告诉我们它是什么特殊属性,如图尺寸框是一个只能有一个子项并且是固定大小。


      UMG蓝图的用户组件默认并非变量,如果我们后期需要调取这些组件用于图表程序,我们需要在细节面板勾选这个“Is Variable”选项,并且命名不能重复。之后我们就可以在蓝图图表的变量面板看到这个组件供我们调用。



      如图左上角花型的按钮就是UE4锚点。这个锚点看似是一个点,其实可以分别拖拽8个花瓣分别调整8个方向,所以UE4的秒点是4个点。为什么是4点不是8个,其实大家可以UE4锚点理解为“锚点(1个点)”“锚点线(2个点)”“锚点面(4个点)”。下面我会根据UE4所提供的16个锚点类型还为大家说明下这其中的不同。

      我们通过点击细节面板的锚点下拉框就可以看到UE4为我们提供了16种类型,当然我们也可以自行手动拖拽锚点上的花瓣。

      1.锚点形式,根据视窗左上角定位。

      2.锚点形式,根据视窗上方左右居中定位。

      3.锚点形式,根据视窗右上角定位。

      4.锚点形式,根据视窗左侧上下居中定位

      5.锚点形式,根据视窗上下左右居中定位。

      6.锚点形式,根据视窗右侧上下居中定位。

      7.锚点形式,根据视窗左下角定位。

      8.锚点形式,根据视窗下方左右居中定位。

      9.锚点形式,根据视窗右下角定位。

      10.锚点线形式,根据视窗左上角与右上角定位。

      11.锚点线形式,根据视窗左边与右边并上下居中定位。

      12.锚点线形式,根据视窗左下角与右下角定位

      13.锚点线形式,根据视窗左上角与左下角定位。

      14.锚点线形式,根据视窗上边与下边并左右居中定位。

      15.锚点线形式,根据视窗右上角与右下角定位。

      16.锚点面形式,根据视窗左上角、右上角、左下角、右下角定位。

      前面1-9号不用多都很好理解,不太好理解的主要是10-16这几个。我会用一个尺寸框包裹图像组件给大家做3个列子大概就明白了。


锚点线实例

      大家现在看到的是锚点线形式,根据视窗左上角与右上角定位。简单来说就是图表会一直位于视窗的上方0处,宽度会根据视窗大小自行填充,高度固定为50。


锚点面形式1

      现在看的是锚点面形式,左上角与右上角位于视窗0.5处(50%),左下角与右下角位于视窗0.6处(60%),内容是自行填充。当视窗缩小放大时图像会按照当前这个比例自行缩放。


锚点面形式2

      现在看到的是锚点面形式,根据视窗左上角、右上角、左下角、右下角进行定位。也就说内容图像会根据视窗大小自行填充整个视窗。


总结

      锚点的使用还是很基础的功能,不同的锚点设置不得到不同的效果,各位还是静下心来挨个试一试彻底弄明白这个锚点的作用。


      在锚点的下方是位置尺寸与偏移,根据咱们锚点设置的方式不同,下面的位置和尺寸会变成偏移,这个东西不太好用简单话语来说明各位结合锚点自行测试一下就明白了。所以当发现找不到怎么设置位置和尺寸的时候看看是不是锚点设置的问题。


      如果所示对齐就是当前组件相对锚点的位置。既然是相对锚点,那么各位就要注意。如果是锚点点形式那么对齐的XY都可调整,如果是锚点线形式根据锚点位置只能调整X或者Y,如果是锚点面形式则无法调整。


      ZOrder真正的层级,与层级面板完全没有关系。这时显示时的层级,如果想让某个图层在上那么要通过这里进行调解,调解层级面板的层级是没用的要注意。


      大小到内容及时当前组件尺寸完全符合子集内容大小。


      工具提示文本:就是悬停在当亲控制时显示的文本内容。可以绑定到的函数调取函数信息。

      已启用:用于启用与停用组件

      可视性:UE4自带的描述很清楚了就是可视性的设置。但是要单独说下什么事占用空间与命中测试。首先“占用空间”就是当前组件虽然不可见但是还是占用的这片地方,它下方的物体不可点击。命中测试,当鼠标悬停在它上面时时候被检测到。

      渲染不透明度:当前组件集子集整体的不透明度。

      光标:当鼠标放置在组件上时,光标显示的样式。


      裁剪,阉割版的蒙版,有很多的选项我就用过裁剪一种。因为有的一些效果不能用一张图片就完美的解决,所以需要配合UE4内置的组件在使用裁剪与变换才能得到我们想要效果。比如一个我想用一个六边形做背景模糊。具体为什么后面说背景模糊控件的时候会告诉各位。


      就是咱们常用的变换功能,平移、缩放、斜切、角度等。


      以上是UMG蓝图组件细节面板一般都会有用的基础功能设置,这里各位了解后下面开始说下各个组件其中的主要功能与作用。


      面板类的组件是最常用的排版组件,所有组件都脱离不了复合使用这些组件。


      尺寸框的主要功能“子布局”。

      高度与宽度重载,是无视内容大小直接重新设置一个宽度和高度。

      所需最小宽度与高度,如果内容宽度高度大于这个值时,尺寸宽会跟随变大,如果小于尺寸框则使用当前值不在缩小,类似于CSS的MinWidth与MinHeight属性。

      所需最大宽度与高度,与上面时相反的。内容大于当前值尺寸框则不会继续变大。内容小于当前值则会跟着缩小。类似CSS的MaxWidth与MaxHeight属性。

      最小最大宽高度比,吃亏放大缩小时的比例,需要配合上面的参数一同使用。

      其中注意,尺寸框只能拥有一个子集。


      垂直框组件可以拥有多个子集,它并没有自己的单独属性。垂直框主要将它的子集按照图层的顺序从上往下挨个排序下来。

      注意这个 组件可以有多个子集。


      水平框与垂直框是差不多的组件,只是它将子集从左到右排列。


      缩放框,如命所以就是控制缩放子集的组件。它主要是通过设置拉伸与拉伸方向来设置子集按照什么形式进行缩,比如以X轴为基准缩放还是以Y轴为基准缩放。


      滚动框会将框体大小外的内容自动隐藏,通过上下或左右滚动的方式进行展示的一个组件。我们可以通过样式来设置组件上下左右的阴影样式也可以通过条样式去修改滚动条的样式大小等。同时我们可以通过滚动选项里的参数去调整滚动框的朝向,滚动条的可见等一些参数。


      控制切换器是只能显示一个子集,我们通过切换器的激活控件索引去控制显示层级面板内的底几个子集。


      网格面板是一个表格面板,我可以通过选择其子集然后点击上下左右箭头来调整内容所在的行与列。行高度与列宽度均有行内最大高度内容与列最大宽度内容控制,这一要记住。



      特殊效果UE4仅为我们提供了一个效果就是背景模糊,这个组件会模糊它后面的所有内容,如UI内容甚至场景模型。有一点大家非常注意的是,背景模糊仅会模糊层级面板它上一层的UI内容,它下一层与子集不会被模糊。我们可以通过模糊强度去控制高斯模糊的程度,而如果我们勾选了“为模糊应用透明度”这个选项时,如果我们去调整“行为”选项下的“渲染不透明度”时则会在当前模糊强度上继续增加或减小。而低质量回退笔刷与模糊半径我还真没明白。

      这里我放了3种实例,我从左到右挨个说明下:

      1.可以看到白色文字在层级面板中位于背景模糊组件的上层,所以被模糊掉了,而蓝色文字则在下层并未受到影响

      2.这个我在背景模糊组件里增加了一个图像,图像也未被模糊。

      3.这里各位就要注意了,UE4想要做异型模糊是不能使用图片的。如果想要得到一个美观的异型模糊需要配合渲染变化与裁剪然后与其他组件一同配合才能实现。而项目每个元素的表格背景就是用背景模糊集合其他组件与变换拼合而成。具体怎么拼接的可以查看源工程。


      通用类型的组件我并未全部使用到,所以我就简单说下我用到的集中,也是我认为最常用的。



      首先我们可以通过外观调整按钮的普通样式、已悬停样式、已按压样式、已禁用样式、普通填充、按压填充、按压音效、悬停音效、颜色和不透明度与背景颜色,这些都很好理解不用多做说明。主要给为要注意的是,UE4的按钮样式均是默认添加的。如果说咱们不需要悬停样式那么需要手动设置悬停样式与普通样式相同。还有就是就目前我所接触到,凡是涉及到点击交互的都需要使用按钮这个组件。


      事件选项也是按钮与其他组件不同的地方,许多组件是没有事件这个选项的。所以也就说如果需要做UI交互的话是必须使用这个组件。我们只需要通过点击对应时间后方的加号按钮,即可在图表模式内新增一下对应的事件供我们编写对用程序。


      图像组件,很简单可以调用一张贴图或者用户界面材质,也可以填充一个颜色。下方事件可以触发绑定一个函数。


      文本块组件是一个不支持用户编辑的文本组件。我们可以通过内容栏对内容进行编辑。然后在可以在外观栏设置内容的字体字号颜色阴影(说实话UE4的阴影很不好还是不要用了)。这里还有一个边缘,是内容距离组件边框的距离,好如CCS里Padding属性。换行栏里当我们勾选自动包裹文本后,文本块尺寸缩小或变大时内容则会自动换行。而包裹文本处则是设置文本到达什么位置才会换行。


      图元下我就使用了一个间隔区组件,其他还未研究尽情谅解啊。


      间隔区组件,是一个物无子集组件。主要用于设置组件与组件之间的间隔距离。它只能调解一个尺寸属性。


      用户创建类的组件,在起初其实是没有任何内容的,这时应为这里显示的是我们自行创建的UMG蓝图。现在看到的就是我自己创建的所有UMG蓝图。

      具体这个有什么作用呢?我们可以通过UE4提供的组件创建一个简单的蓝图,然后将这个蓝图作为组件再次应用到其他蓝图里,我们可以通过蓝图通信的方式去改变子集蓝图的内容。当然被调用的蓝图组件其实就是一个蓝图实例,可以多次调用修改,而且之间并不冲突。这样做的好处就是。可以将样式进行封装,我们需要那个就调用那个,如果需要修改样式,我们只需要修改一个基础的即可。


      用户界面材质,在说材质的时候我并为说道。我们可以通过创建一个材质,将材质类型更改为用户界面类型。这时这个材质就可以应用到UMG蓝图的贴图插槽里。那么为什么要用用户界面材质呢,比如我有一个MP4我想让它用作于按钮悬停,那么光是贴图是无法实现的,所以就需要用到用户材质了。


      UE4将动画与时间轴分开设置了,那是因为动画事由1个或多动时间轴组成。而我们可以拥有多个动画。我们在播放的时候播放是动画而不是时间轴。

      默认状态下,时间轴是不能进行操作的。我们需要现在动画窗口创建并命名一个动画,然后选择当前动画为其添加时间轴。我们可以选择图层中的组件然后点击时间轴中的添加轨道,添加当前当前选择组件的轨道或从中选择一个层级中已有的组件。之后点击已添加组件后方的增加轨道,可以增加对应参数的时间轴轨道。咱们也可以通过点击细节面板参数名称后面的关键帧按钮直接添加轨道。剩下的曲线调整关键帧设置凡是用过AE的小伙伴应该就都很熟悉了。

      最后要说一下,UE4的时间轴创建时默认是20帧,哪里可以修改默认帧数我翻遍的所有设置也没找到。


      UMG蓝图的图表其实和Actor的图表是几乎一模一样的,唯独在变量处多了一个Animations分类也就是动画分类。我们在设计器里创建的所有动画都会显示在这个分类里供我们调用。因为UMG蓝图将时间轴放置在了设计器中,所以咱们在图表中搜索不到时间轴节点。其余的功能几乎一样我就不多说了。我主要说一下动画怎么调用与怎么获取数据表信息并赋值与UI界面。


      上面说道了动画这里我就先说下动画的调用。UMG的动画调用与Actor还是有点不一样的。

      我们先需要从变量里找到我们所需的动画,然后再用户界面分类找到播放动画。用户界面分类下的动画是专门用于UMG蓝图的动画设置几点,功能做鱼与之前的Actor蓝图里大致一样。

      这里我就主要说下图中的2种播放节点的区别,我们已经知道Actor蓝图中的时间轴节点是带有完成事件触发的,而UMG蓝图中的播放动画节点是不带有这个功能的。如果我们需要带有完成事件的播放节点就需要使用下方的这个“具有已完成事件的播放动画”节点。这2个节点的内置参数几乎一样,最主要是有多一个已完成事件。


      这里我概括的说明下我是怎么获取数据表里的数据并将数据赋值到对应的UI内。至于涉及到的节点,在Actor蓝图内我都有提及过,不明白的可以往前翻翻。


      思路很多,相对真长的程序大佬们我这种可能最是最笨的,但是获取到了。所以只能说下我的思路仅供各位参考,如果有更好的办法也可采用。

      因为我这个项目每条数据下的内容条数每一个都不一样,所以我先创建了一个数据数量的数据表,用来设置每条数据的数据量。然后通过数据量让程序自行生成对应的UI组件,最后在从对应的数据表内获取到指定的内容按照索引赋值到对应的UI组件里。

      这里我将数据分成了4大类,分别是“Atomic_properties”、“Other_properties”、“Physical-properties”、“History”。


      现在看到的History数据获取它下面每种字段数据的数据数量的自定义事件。

      首先我通过点击元素的Actor蓝图获取到当前这个Actor的类名称。然后通过创建的History Table变量获取到History数量数据表,并货到数据表表行,根据类名称查找到指定行。对齐进行中断获取到每行的数量。然后传输给对应函数为其创建对应数量的UI控件做准备。这里将数据表中断后我们可以看到当前数据表里有7类数据。所以我这里创建了7组对应的函数,每组函数功能是一样的。


      判断是否有值,如果有值根据数量新增TEXT控件并赋值。

      我们已经获取到对应字段的参数数量,然后我通过这个数量去判断。如果值不是0则执行后方函数,并将这个数量传给生成控件函数。


      首先我将Discovery切换到第一个,这个组件下有一个Discovery Text垂直组件。使用获取到字段数值设  置For Loop设置循环创建“Text”这时一个我提前创建的UMG蓝图,并将其附加到Discovery Text的子集。循环完成后返回。


      生成Text控件后就为其赋值更改Text下文本块。这时我通过Discovery Table变量获取到Discovery数据表,根据类名称获取当前行内容,这里我数据表经过统计,最多就有4个值,所以我这中断后就传送4个值去为Text赋值。如果没有值传的则是空,而且之前我们是创建了对应数值数量的子集Text组件,所以不会出现空组件的情况。


      这时我拿到数据表里的参数,就可以为Discovery Text下的所有Text控件进行赋值。到此赋值结束。


      UE4确实是一个非常强大引擎,不仅仅可以做出让人身临其境的游戏作品,也可以拿来制作逼真的现实场景,同时还能其他方方面面我们意想不到的地方。想要玩转UE4确实不是一年二年可以做到的。需要我们不断的去学习研究。这个学习和研究不仅仅局限在UE4本身,而是现今的最新技术和对不可能的研究。

      随着传统互联网技术的逐步稳定,同时又有国家持续推进的“数字中国”计划,我相信数字孪生技术将很快进入大众的视野,解释这些技术将不仅仅应用在游戏、大数据,而是我们身边触手可及的地方。







  • 项目下载


百度云

链接

https://pan.baidu.com/s/1WfIeag53gKTqmYBeoi73oA

提取码

  • jwkp


Github

项目地址

https://github.com/AnzaiDesign/MOTION_PERIODIC_TABLE

程序地址

https://github.com/AnzaiDesign/MOTION_PERIODIC_TABLE_BALE

Powered by Froala Editor

更新:2021-07-19

收藏

17人已收藏

安仔设计

https://dribbble.com/AnZai-zhang

  • 35

    作品

  • 64

    粉丝

  • 3

    关注

  • Stable Diffusion 参数测试
  • 虚幻引擎5.0制作三维可视化图表-柱状与曲线图表
  • <初入UE4>之全流程开发元素周期表
  • 《努力总有回报-C4D》-字母

    猜你喜欢

      2021-07-19 原创文章 教程 举报 4774 17 7 1

      UE4之全流程开发基础知识

      0.0°

      你确定要举报UE4之全流程开发基础知识

      如果查出恶意举报,十天内禁止提交任何举报申请。

      0/200

      上传证据: 超过10M的附件请使用网盘地址

      点击上传附件

      对谁可见:

      全部设计师
      • 全部设计师
      • 推荐设计师和认证设计师

      您确认要推荐?

      该作品发布时间:2021年07月16日

      评分

      完整度

      启发性

      勤奋性

      排版布局

      推荐心得

      建议20-200字以内

      0/200

      7
      17
      1

      账号或密码错误,请重新输入

      账号或密码错误,请重新输入

      登录

      手机号

      发送验证码 120s 验证码错误

      登录
      第三方账号登录