找回密码
 立即注册
查看: 412|回复: 0

Unreal蓝图入门 节点

[复制链接]
发表于 2021-8-11 10:33 | 显示全部楼层 |阅读模式
最近开始摸索Unreal的蓝图基础使用,一些基本的操作大家可以在官方网站中的教程中找到,所以我们直接跳到事件图表上来讲。
首先,Unreal有丰富的注释功能,按住键盘C可以创建出注释区域,在右侧的“细节”面板我们可以轻松调整颜色以及气泡的出现。
节点

见过一些别人编辑好的蓝图的同学们都知道,蓝图中有错综复杂的连线,这些连线从一个地方出来,到另一个地方去,控制了流程和数据的输入输出。就像是交通线,每个城市就相当于“节点”
节点类型
事件(Events)、自定义事件、函数调用、事件调度器、流程控制、数组节点、时间轴、数学表达式节点、随机流、注释。这些都属于节点类型,丰富的节点类型可以帮助我们在小型的游戏开发中基本不需要编写自己的C++代码,实现一些功能,但是同时者考验来蓝图编写者的逻辑思维能力。
事件
在蓝图中可以定义各种事件,创建蓝图时默认就会为我们提供三种事件:BeginPlay Tick以及Overlap。对应着我们游戏开始,帧调用以及碰撞触发事件。 在一个蓝图中,事件的种类可以有多个,但是同种类型的事件只能有一个。
另外,我们也可以自定义事件,Add Event一个事件,然后我们在细节面板可以修改自定义事件的名字,定义各种事件的成员变量。
函数调用
函数的调用是蓝图中同样重要的一环,函数调用可以简单分为一般函数调用,其他函数调用和纯函数调用。
所谓一般函数调用,是可以在蓝图中形成的操作,同属于目标Actor或对象的函数相对应 。
其他函数调用,是属于除了该蓝图之外的其他对象或者Actor的函数。
纯函数调用,是可以执行的特殊动作,它不会影响世界或者世界中的对象。比如输出一个属性值,进行数学运算等。
流程控制
switch:提供了各种switch判断的类型,也可以自定义枚举类型在这里判断。
branch:相当于if else语句
Do N:接受条件执行,但是有次数限制,达到次数上限后,再次接受相同条件无法执行后续节点操作。但是可以通过重置使次数归0 .
DoOnce:同上,但是只能执行一次
DoOnceMultiInput:可以根据不同情况执行不同的操作,但是如果想要再次执行,需要Reset。
FlipFlop:交替执行A和B后面的内容。
ForLoop:for循环
ForLoopWithBreak:可以在一定条件下终止循环,执行相应的语句。
Gate:门,顾名思义。可以设置Enter的条件和Exit的执行语句,可以设置open的条件,close的条件,或者用toggle使其自动open和close·······
MultiGate:可以又多种输出的开关门,可以设置开始和重置,可以选择是否随机或者循环,可以从只当index的输出开始
Sequence:按顺序一次执行,但是值得注意的是,即使写了Delay,Sequence也会直接执行后面的语句
变量
存放一个值或者引用世界中一个Object或Actor的属性。
变量类型:




详细介绍:
布尔值(bool):小案例:利用不布尔值设置一个point light的intensity,按下键盘一个键后,如果灯是打开则关闭,如果关闭则打开。
易犯错误:将一个布尔值取反后,忘记重新把这个取反后的值设置回这个变量中,导致只能发生一次变化。
字节(byte):学过一定计算机理论的知道,1字节是8位,在UE中存储范围是0-255。在右侧细节栏中可以设置UI中滑动的范围以及值的取值范围,后者控制前者。
整型和64位整型:整型是32位,两者仅仅范围不同
浮点型(float):范围很大,案例:做一个四舍五入的功能(利用浮点型转整型操作)。
Name,String以及Text:Name是轻量级的字符串,经常被用于对象的命名 string是我们通常用的字符串,支持字符串的拼接,查找等其他语言中都存在的操作 Text是大段文本,如果游戏中出现大段对话,基本我们就使用Text,这样会对我们的本地化非常有帮助。
Vector:引擎中很多属性例如位置,旋转,缩放都是使用Vector。案例:使用Vector修改物体的位置和缩放。
Rotator:和Vector类似,可以用来定义一个旋转角度。
Transform:Transform即物体的位置,旋转和缩放,第一个和第三个是Vector类型,第二个是Rotator类型。案例:获取物体的Transform中的旋转进行输出。
Enum枚举类型:我们可以在内容浏览器中新建一个自己的枚举类型,为其设置各种情况以及解释
Structure结构体:我们可以在内容浏览器中新建一个结构体,类似于各种编程语言中的struct
综合案例:创建一个学生结构体,属性为姓名,年龄,以及学校(利用枚举类型),在蓝图中实现这样的功能:根据学生年龄的大小,输出“姓名”+是否成年+“(学校类型)”。
数组节点:
由于本篇文章是基于有一定其他编程语言经验的人编写,所以数组方面可能不会那么详尽的去介绍。


在这个地方可以修改变量的类型,有普通变量,数组,集以及字典。
数组中的方法:


很多方法都是其他语言中存在的一些常用的方法,大多都属于增删改查,具体如何使用各位客官可以自己摸索。
集合:
接下来就是我们的第三种数据存储容器,集合


在C#中,我们有数组,列表,字典,哈希表,栈和队列等数据结构,集合也是一种类数据结构容器,在初等数学中我们应该学过集合相关的知识。
如果硬要对比的话,集合就好比一个键值对相同的字典。
在蓝图中,可以对集合进行如上图的操作。其中也包含了最常用的差并交三个基本操作。
地图:
第四种数据存储容器:map
这个就很熟悉了,有的编程语言中它叫map,有的中是Dictionary,本质上就是一个键值对,而且是一种引用类型的键值对;与之相对的是,哈希表是一种值类型的键值对。


上面是map中一些常用的方法,有一定数据结构知识的客官们应该能轻松应用这些方法。
函数(Function)

在上图中,我们已经大概了解了图标和变量的含义,那么接下来是函数。


可以覆盖,但由于我们还没有继承的子类或者父类,我们就先新建一个函数


点击新建的函数,可以进入我们的函数界面,在右侧的细节面板有我们的一些函数相关的设置,例如一些注释,访问方式(public protected private) 是否为纯函数 在输入和输出中,我们可以定义相应的函数的输入和输出数据流。
实操训练:对一个数组进行排序
unreal蓝图中实现数组的排序是非常消耗性能且复杂的。
宏:
宏跟函数非常类似,可以定义输出和输出,而它比函数多了一个功能,它可以在右侧的细节面板设置多个输入和输出引脚,有点类似于我们的分支,具体如何使用到之后继续总结。
数学节点–蓝图中的math类


如图所示,在蓝图中搜索math,会出现很多一些蓝图中的数学节点,这些节点提供了我们对一些数据类型的基本的操作。
数学节点也包括对transformation的操作,另外,我们的Random节点也归在数学节点里,不再做进一步的介绍,请各位客官尝试使用一下各种数学函数,灵活运用到自己的项目中。
时间轴:
Timeline为我们提供了一个基于时间的控制器,不仅仅是做动画,Timeline代表了一种在时间轴上进行各种操作的编程习惯。
对Timeline的介绍分为两部分,首先是Timeline的曲线编辑器:


最上面一排,可以添加基于各种类型变量的曲线,设置曲线的时间,自动播放,循环等属性。在一个Timeline中可以定义多条曲线,都会在事件图表中显示出来。中间是我们的曲线编辑窗口,我们可以按shift去添加关键帧,用delete去删除关键帧。右键点击关键帧,可以设置关键帧在此处的状态是平滑,线性还是剧变等等状态。
然后是事件图表中的Timeline节点:


Play:播放
Play from Start:从头开始播放
Stop:停止
Reverse:从后往前播放
Reverse from End:从最后往前播放
Set New Time:为动画设置一个新的时间
Update:每帧执行
Finished:结束执行
Direction:播放是从后往前还是从前往后
Timeline在创建后,在左侧会以组件的形式出现,我们可以像对其他变量和组件一样对它进行get 和set
下面是关于Timeline节点的一些方法:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 05:04 , Processed in 0.094646 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表